繁体   English   中英

在网站之间同步数据表

[英]Synchronising data tables between websites

好的,所以我在一个充满IP地址的站点上有一个数据表。 我有另一个具有相同数据表的站点,并且我想每周从站点a同步到站点b

所以我在考虑通过让站点b执行file_get_contents()并在站点a上调用URL来获取数据,该站点运行查询并通过print_r输出数据

这是最好的方法还是还有其他方法?

网站B确实

$json = file_get_contents('http://sitea.com/?data=synch');

$data = json_decode($json);

var_dump($data);

网站A在调用该URL时执行此操作

$db = $this->getConnection();       

$q = "SELECT * FROM data";

$this->_data = $db->recordset( $q );

return json_encode($this->_data);

当我尝试在另一端获取数据时,无法将其变成数组?

var_dump($ data)只给我一个空值吗?

这是我在站点B上执行var_dump($ data)的结果

[{ “IPID”: “1”, “countryID”: “13”, “beginIP”: “1.0.0.0”, “endIP”: “1.0.0.255”, “子网掩码”: “24”, “beginIPNum”: “16777216”, “endIPNum”: “16777471”},{ “IPID”: “2”, “countryID”: “44”, “beginIP”: “1.0.1.0”, “endIP”: “1.0.1.255”, “掩码”: “24”, “beginIPNum”: “16777472”, “endIPNum”: “16777727”},{ “IPID”: “3”, “countryID”: “44”, “beginIP”:“1.0.2.0 ”, “endIP”: “1.0.3.255”, “子网掩码”: “23”, “beginIPNum”: “16777728”, “endIPNum”: “16778239”},{ “IPID”: “4”, “countryID”: “13”, “beginIP”: “1.0.4.0”, “endIP”: “1.0.7.255”, “子网掩码”: “22”, “beginIPNum”: “16778240”, “endIPNum”: “16779263”},{ “IPID”: “5”, “countryID”: “44”, “beginIP”: “1.0.8.0”, “endIP”: “1.0.15.255”, “子网掩码”: “21”, “beginIPNum”:“16779264 “ ”endIPNum“: ”16781311“},{ ”IPID“: ”6“, ”countryID“: ”107“, ”beginIP“: ”1.0.16.0“, ”endIP“: ”1.0.31.255“,” 子网掩码“:” 20" , “beginIPNum”: “16781312”, “endIPNum”: “16785407”},{ “IPID”: “7”, “countryID”: “44”, “beginIP”: “1.0.32.0”, “endIP”: “1.0.63.255”, “子网掩码”: “19”, “beginIPNum”: “16785408”, “endIPNum”: “16793599”},{ “IPID”: “8”, “countryID”:“107 “ ”beginIP“: ”1.0.64.0“, ”endIP“: ”1.0.127.255“,” NE tMask “:” 18" , “beginIPNum”: “16793600”, “endIPNum”: “16809983”},{ “IPID”: “9”, “countryID”: “211”, “beginIP”: “1.0.128.0” “endIP”: “1.0.255.255”, “子网掩码”: “17”, “beginIPNum”: “16809984”, “endIPNum”: “16842751”},{ “IPID”: “10”, “countryID”:” 44" , “beginIP”: “1.1.0.0”, “endIP”: “1.1.0.255”, “子网掩码”: “24”, “beginIPNum”: “16842752”, “endIPNum”: “16843007”}]

我已经在JSONLint上进行了验证

如果我做$ ipRecords = json_decode($ data); 然后是var_dump($ ipRecords); 我得到空了???

在聊天中解决问题。 事实证明,站点A不仅输出编码后的JSON字符串,因此站点B需要一种从file_get_contents调用中仅返回JSON字符串的方法。

提出的解决方案:

在网站A:

$db = $this->getConnection();       

$q = "SELECT * FROM data";

$this->_data = $db->recordset( $q );

return "@JSON_OUTPUT@". json_encode($this->_data) ."@JSON_OUTPUT@";

在网站B上:

$json = explode("@JSON_OUTPUT@", file_get_contents('http://sitea.com/?data=synch'));

$data = json_decode($json[1]);

var_dump($data);

您可以同时控制两个网站吗? 还是仅基于网络? 如果您可以同时控制两个站点,请创建一个mysqldump并将其传递(保存)。 猜想它更容易使用。 而且您可以运行cronjob来处理此问题,因此在设置好之后,您不必介意任何事情。

您应该看看以下内容: 复制

如果您同时控制两个服务器,复制也将正常进行。 然后,您不必处理它,服务器将为您完成所有操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM