我有一段代码通过为其提供ID来获取数据。例如,如果我给它ID为1230,则代码从网站(外部)获取ID为1230的文章数据并将其插入数据库。
现在,问题是我需要获取所有文章,比如ID 00001到99999。
如果执行'for'循环,60秒后PHP内部时间限制将停止循环。
如果使用某种header("Location: code.php?id=00001")
或header("Location: code.php?id=".$ID)
并增加$ ID ++然后重定向到同一页面,浏览器会因为无限循环或重定向问题而阻止我。
请帮助!
答案 0 :(得分:1)
如果您的服务器允许,这可能是最佳解决方案:只需删除此脚本的时间限制。
set_time_limit(0);
答案 1 :(得分:0)
你有几种方法可以做到这一点。
最好的方法是设置一个cron来每隔X分钟执行一次刮刀。
您需要跟踪当前的ID。
因此,如果您设置一个函数来写入文件,您可以按照以下方式执行
-
打开文件(获取当前ID) 在id上启动Parser 60次 插入数据 打开文件并使用新ID进行更新 关闭文件并退出。
这将在几个小时的空间内运行,或者需要很长时间。
如果您手动执行此操作并且坐在那里并在每次脚本完成时刷新,那么您可以使用会话而不是将ID写入文件
`session_start();
$id = (isset($_SESSION['position']) ? $_SESSION['position'] : 0);
for($i=$id;$<=9999;$i++)
{
//FetchItem($id); //Or whatever function it is you use!
//Update the id for next run.
$_SESSION['position'] = $id;
}`
如果您愿意覆盖您的服务器资源,您可以使用set_time_limit(120)延长60秒,持续120秒或您喜欢的任何内容。
答案 2 :(得分:0)
如果您的服务器不允许您更改脚本时间限制,只需让您的脚本检查数据库中序列中最后插入的文章并从那里开始。
另一种方法:使用Javascript“window.location =”而不是标题来重定向。