好的,所以我在一个站点上有一个充满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”, “掩码”: “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”,“netMask”:“24”,“beginIPNum”:“16842752”,“endIPNum”:“16843007”}] < / p>
我在JSONLint
验证了它如果我做$ ipRecords = json_decode($ data);然后是var_dump($ ipRecords);我得到Null ???
答案 0 :(得分:1)
聊天问题解决了。关闭站点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);
答案 1 :(得分:0)
您应该看一下: Replication
答案 2 :(得分:0)
如果您控制了两台服务器,复制也会起作用。然后你不必处理它,服务器会为你做这一切。