我有一个通过 CRON 运行的脚本,它处理我数据库中一个表中的每一行(或用户),然后使用 cURL 根据在该行中找到的用户名提取 URL,然后将其他信息添加或更新到同一行。这在大多数情况下都可以正常工作,但似乎需要大约 20 分钟 + 才能遍历整个数据库,而且它似乎越来越慢,它进入 while 循环的距离越远。我目前大约有 4000 行,将来还会有更多。
现在我的代码的简化版本是这样的:
$i=0;
while ($i < $rows) {
$username = mysql_result($query,$i,"username");
curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/'.$username.'.php');
$page = curl_exec($ch);
preg_match_all('htmlcode',$page,$test)
foreach ($test as $test3) {
$test2 = $test[$test3][0];
}
mysql_query("UPDATE user SET info = '$test2' WHERE username = '$username');
++$i;
}
我知道 MySQL 查询不应该在 while 循环中,这是我要从中删除的最后一个查询,但是处理需要反复运行很长时间的 while 循环的最佳方法是什么?
我在想最好的选择是让脚本一次运行十行然后停止。例如,因为我在 CRON 中有脚本,所以我想让它每 5 分钟运行一次,它会运行 10 行,停止,然后不知何故知道当 CRON 作业再次开始时拿起接下来的 10 行。但是,我不知道如何做到这一点。
任何帮助,将不胜感激!