开发始终运行的PHP脚本

时间:2013-03-31 17:53:12

标签: php console

(我们的服务器基于Linux)

我是一位经验丰富的PHP开发人员,但我第一次开发一个总是运行并获取一些数据的机器人。

我将使用简单的(和示例)方案解释我的应用程序。我有大约2000个网站网址,我的应用程序将访问此网址并记录网页的内容。此应用程序将在7天24小时内工作。当它完成2000个网站时,它将再次开始工作。

但我需要为我的服务器提供一些建议。如您所见,我的应用程序将运行 infinity ,直到我关闭服务器。我可以用无限循环执行此操作:

while(true)
{
     APPLICATION CODES HERE
}

但我认为这对服务器来说是一个邪恶的东西:)是否有可能在服务器端做这样的事情?

另外我认为使用 cronjobs 但它不适用于我的场景。因为我的脚本再次开始工作,所以它完成了工作。我必须“当你完成工作时重新开始”,而不是“每30分钟开始”。因为我不知道,也许取得所有2000个网站,将花费超过30分钟或不到30分钟。

我希望我解释得很清楚。

我也担心内存使用情况。如您所知,垃圾收集器会在每个PHP脚本停止后清除内存。但正如我所说,我的应用程序不会停止数天(可能是几周)。因此垃圾收集器不会被触发。我在脚本结束时手动取消设置(unset() function)所有使用的变量。这够了吗?

我需要服务器管理员的一些建议:)

PS。我正在开发它作为控制台应用程序,而不是Web应用程序。我可以从命令行执行它。

2 个答案:

答案 0 :(得分:0)

批处理..将所有站点存储在csv或其他内容中,在完成后标记它们,然后处理所有未标记的站点,然后处理所有标记的..等等。只做1或5表示时间,每分钟从cron启动批处理脚本..

甚至不要一次尝试所有这些......任何错误,你都不会知道发生了什么..

甚至可以将作业存储在数据库中,存储处理统计数据等。允许微调和更好的报告。

您可能会尝试运行无限的PHP脚本,即使是从命令行也可以达到时间限制。您的服务器管理员也会讨厌您。如果你没有正确释放资源,可能会遇到内存限制..用PHP很容易做到。

阅读:http://www.ibm.com/developerworks/opensource/library/os-php-batch/

答案 1 :(得分:0)

您的脚本只能在列表中运行一次并退出。这样,可以释放php持有的资源。

然后有一个shell脚本,在无限循环中调用php脚本。

由于php不是为长时间运行的任务而设计的,我不确定垃圾收集是否适合任务。每次运行后退出将强制它释放所有内容。