【发布时间】:2013-04-01 16:39:45
【问题描述】:
我每小时运行一个用 PHP 编程的爬虫,并执行一项 cron 作业。当一切都按预期进行时,脚本会自动退出。但是,由于某些原因,有时它会陷入无限循环。情况变得更糟,因为我使用锁定文件来避免重复运行,当爬虫卡住时它永远不会再次运行,直到它手动杀死它(ps aux -> kill)
无论发生什么,我如何确保脚本在几个小时后结束?
我应该在 php 代码中添加一行吗?直接在 Linux 中这样做不是更健壮吗?
到目前为止,我最好的想法是创建一个包含所有必要命令的小批处理文件,然后使用 cron 而不是直接使用 php 脚本调用该批处理。
我说得对吗,命令应该是什么?
谢谢
编辑:到目前为止我发现的最好的是:http://www.linuxquestions.org/questions/linux-general-1/how-to-kill-the-process-after-specific-time-624453
bash 太长了,我希望有一个更智能、更短的解决方案。
干杯
【问题讨论】:
-
我会添加一些日志代码来解决无限循环问题。从长远来看,它可能会更好。
-
显然这是最好的解决方案。尽管如此,鉴于我正在抓取许多网站并且它们一直在变化,我需要找到我的问题的解决方案..
-
您可以添加一个计时器,以便您在每个网站上最多花费 x 秒。我会通过为每个网站生成一个新线程来做到这一点,然后在计时器结束时将其终止。