好的,我在一个站点上有一个数据表,里面有很多ip地址。我有另一个具有相同数据表的站点,每周我都要从站点a同步到站点b
所以我想通过让站点b做一个文件来获取数据,并调用站点a上的一个url,它运行一个查询并通过打印输出数据
这是最好的办法还是有别的办法?
站点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);
当我尝试在另一端获取数据时,我无法将其变为数组?
变量转储($data)只给我一个空值?
这是我在B站点上做变量转储(数据)得到的结果
[{“ipID”:“1”,“countryID”:“13”,“beginIP”:“1.0.0.0.0.0.0”,endIP:“1.0.0.255.0.0.0.255”,“网络掩码”:“24”,“BeginInInNum”:“16777216”,“endIPNum”:“16777471”},{“ipID”:“2”,“countryID”:“44”,“beginIP”:“44”,“beginIP”:“1.0.1.0.0.1.0”,“endIP”:“1.0.1.255”,“网络掩码”:“24”,“BeginInInNum”:“1677777472”,“endIPNum”:“1677777727”},“endIP:“1.0.0.0.1.1.0.0.1.255”,“endIP:““beginIP”:“1.0.2.0”,“endIP”:“1.0.3.255”,“netMask”:“23”,“BeginInNum”:“1677777728”,“endIPNum”:“16778239”},{“ipID”:“4”,“countryID”:“13”,“beginIP”:“1.0.4.0”,“endIP”:“1.0.7.255”,“netMask”:“22”,“BeginInNum”:“16778240”,“endIPNum”:“16779263”},{“ipID”:“5”,“countryID”:“44”,“beginIP”:“1.0.8.0”,“endIP”:“16779787878240”,“endIPNum”:“16779263”,“endIPNum”:“167792636”},{“ipID”:“5”,“countryID”:“5”,“countryID”:“44”,“beginIP”:“44”,“beginIP”:“1.0.8.“:”16781311“},{“ipID”:“6”,“countryID”:“107”,“beginIP”:“1.0.16.0”,“endIP”:“1.0.31.255.1.0.1.255”,“网络掩码”:“20”,“BeginInInNum”:“16781312”,“endIPNum”:“16785407”},{“ipID”:“7”,“countryID”:“44”,“beginIP”:“1.0.32.0”,“endIP”:“1.0.63.63.255”,“网络掩码”:“19”,“BeginInNum”:“16785408”,“BeginInNum”:“16785408”,“endipIP”:“1.0.63.32.0.32.0”,“endIP”:“1.0.0.32.32.0”,“endIP”:“endIP”:“1.0.0.0.0.0.63.63.63.63.IP:“1.0.127.255”,“网络掩码”:“18”,“beginIPNum”:“16793600”,“endIPNum”:“16809983”},{“ipID”:“9”,“countryID”:“211”,“beginIP”:“1.0.128.0”,“endIP”:“1.0.255.255”,“netMask”:“17”,“beginIPNum”:“16809984”,“endIPNum”:“16842751”},{“ipID”:“10”,“countryID”:“44”,“beginIP”:“1.1.0.0”,“endIP”:“1.0.255”,“netMask”:“24”,“beginIPNum”:“16842752”,“endIPNum”:“16843007”}]
我已经在JSONLint验证过了
如果我执行$ipRecords=json_decode($data);然后执行var_dump($ipRecords);我得到Null???
最佳答案
在聊天中解决了问题。结果发现站点A不仅仅是输出编码的JSON字符串,所以站点B需要一种方法,从文件获取内容调用返回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);