在网站之间同步数据表

时间:2013-12-17 09:19:39

标签: php mysql

好的,所以我在一个站点上有一个充满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 ???

3 个答案:

答案 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)

你能控制两个网站吗?或者它只是基于网络? 如果您可以控制两个网站,请创建 mysqldump 并传递它(保护程序)。猜测它是否易于使用。并且你可以运行一个cronjob来处理这个问题,所以你在设置它之后就不必考虑任何事情了。

您应该看一下: Replication

答案 2 :(得分:0)

如果您控制了两台服务器,复制也会起作用。然后你不必处理它,服务器会为你做这一切。