连续运行PHP脚本

时间:2010-03-11 19:10:17

标签: php

我在MySQL中有一个有时间条目的数据库。有超过1000个时间条目。我想在那时提取时间并准确运行PHP脚本..

我曾尝试连续运行PHP脚本来检查时间,但我的服务器不允许运行脚本超过60秒。

EDIT。我必须每秒检查一次数据库。还有其他选择吗?

9 个答案:

答案 0 :(得分:5)

使用pear包,System_Daemon

http://pear.php.net/package/System_Daemon/

答案 1 :(得分:3)

尝试Unix的cron

答案 2 :(得分:3)

您需要一些外部服务来执行脚本。在Unix机器上,那将是cron。在Windows框中,使用Task Scheduler

答案 3 :(得分:1)

您是否考虑过将您的进程编写为服务器守护程序。它将启动并永远运行一段时间。每隔几分钟或者经常你会喜欢它可以检查下一个x分钟的运行时间。您排队请求,每当这个时间到来时,您就会启动您需要运行的脚本。我不认为cron是你想要的,因为你试图在任意时间安排未来事件......而且我确信你正在尝试每秒检查数据库。

答案 4 :(得分:0)

您必须使用暂停PHP脚本的sleep(arg)函数一段时间,然后继续。

sleep(50); //Pauses

myFunction(); //Runs after the pause

例如,这会暂停脚本50秒。

答案 5 :(得分:0)

编写PHP脚本以从数据库中读取并向crontab添加条目以使脚本在所需的时间运行

答案 6 :(得分:0)

保持进程运行不是一个非常好的解决方案,尤其是因为您需要确保它继续运行。大概你知道下一次发生的时间 - 所以使用'atd'来安排它 - 当被触发时,脚本也应该在何时以及如何安排下一个工作时工作。

这确实意味着工作被链接 - 一个人的失败打破了链条,大多数atd实现的粒度也可能相当高。

您可能希望使用更复杂的调度工具(如Nagios)或流程监控类型方法(如DJB的daemontools或Oracle的OPMN)。

℃。

答案 7 :(得分:0)

DJB的DAEMONTOOLS很棒。所以,显然,系统和/或暴风雨,虽然Remnant扮演一个真正的wanker。

答案 8 :(得分:0)

推荐的Pear包 - system_daemon看起来很棒。但是,作者现在建议使用Ubuntu中随时可用的新功能:upstart

请参阅his article on his own blog from 2012