我正在使用提供商提供的API服务。 API用法类似于 -
https://api.thesite.com/getTable1Records?offset=0
https://api.thesite.com/getTable2Records?offset=0
https://api.thesite.com/getTable3Records?offset=0
(不是真实的地址) 为每个API调用返回1000条记录的JSON。
我第一次检索了所有记录并将其保存到我的数据库服务器中。 用户搜索/处理在我的数据库服务器上运行。 这是API服务提供商推荐的方式。
每当数据发生更改时,API服务提供程序都会更新其数据库。 我无法知道他们何时改变以及他们改变了什么。他们可能会添加新记录/更新现有/删除一些。 我需要定期更新我的数据库(每周一次,每周一或每周2次就可以了)。
这是我的PHP代码,它更新了一个表
// Update Table1
echo "STARTED@" . time() . "<br />\n"; // just for log
$offset = 0;
$username = "username";
$password = "password";
$url = "https://api.thesite.com/getTable1Records";
$c = curl_init();
do{
curl_setopt($c, CURLOPT_URL, "$url?offset=$offset" );
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_USERPWD, "$username:$password");
$json = curl_exec($c);
$phpobj = json_decode($json);
$offset += 1000;
update($phpobj);
echo "1000UPDATED@" . time() . "<br />\n"; // just for log
}while( count($phpobj) > 0 );
echo "ENDED@" . time() . "<br />\n"; // just for log
function update($phpobj){
$host = "localhost";
$user = "root";
$pass = "";
$db = "theapitest";
$link = mysqli_connect($host, $user, $pass, $db);
for( $i=0; $i<count($phpobj); $i++){
$row = $phpobj[$i];
$id = mysqli_real_escape_string($link, $row->id);
$name = mysqli_real_escape_string($link, $row->name);
$query = "INSERT INTO `tablename` VALUES('$id', '$name')
ON DUPLICATE KEY UPDATE `name`='$name'";
mysqli_query($link, $query);
}
mysqli_close($link);
}//end function
问题是