[英]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);
如果您同时控制两个服务器,复制也将正常进行。 然后,您不必处理它,服务器将为您完成所有操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.