连续运行PHP脚本

连续运行PHP脚本,php,Php,我在MySQL中有一个数据库,其中包含时间条目。有1000多条时间记录。我想提取时间并在那个时候运行一个PHP脚本 我已经尝试连续运行一个PHP脚本来检查时间,但是我的服务器不允许运行脚本超过60秒 编辑。我必须每秒钟检查一次数据库。有其他选择吗?试试Unix。您需要一些外部服务来执行脚本。在Unix设备上,这将是。在Windows框中,使用。您是否考虑过将进程编写为服务器守护进程。它将在一个长时间的循环中启动和运行。每隔几分钟或您希望的频率,它可以检查下一个x分钟的运行时间。你排队等待你的请求

我在MySQL中有一个数据库,其中包含时间条目。有1000多条时间记录。我想提取时间并在那个时候运行一个PHP脚本

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


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

试试Unix。

您需要一些外部服务来执行脚本。在Unix设备上,这将是。在Windows框中,使用。

您是否考虑过将进程编写为服务器守护进程。它将在一个长时间的循环中启动和运行。每隔几分钟或您希望的频率,它可以检查下一个x分钟的运行时间。你排队等待你的请求,每当时间到了,你就启动你需要运行的脚本。我不认为cron是您想要的,因为您试图在任意时间安排未来事件。。。我敢肯定,这就是您当前每秒尝试检查数据库的方法。

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

sleep(50); //Pauses

myFunction(); //Runs after the pause

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

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

保持进程运行不是一个很好的解决方案,尤其是因为您需要确保它保持运行。假设您知道下一个事件将在何时发生-因此使用“atd”来安排它-当触发时,脚本也应该在何时以及如何安排下一个作业时工作

这确实意味着作业是链式的——一个作业的失败会打破链子,而且大多数atd实现的粒度可能相当高

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


C.

使用pear包,System\u守护进程


DJB的DAEMONTOOLS非常棒。因此,显然是systemd和/或Upstart,尽管残余扮演着一个真正的wanker。

推荐的Pear包-system\u守护程序看起来很棒。然而,作者现在建议使用Ubuntu中现成的新功能:upstart


请参见

如何通过cron作业运行脚本?cron作业是个好主意,但我还必须运行查询来检查数据库中的时间和当前时间,这将花费太多时间。是否有替代方法。您可以使用设置时间限制(0);为了让php脚本“永远”运行,大约1天后,脚本将使用超过1gb的内存。PHP的内存管理器非常原始,如果你想运行1个进程很长时间,你必须使用java或者写一些非常的C++ C++。我到底想做什么。有没有其他的替代。我的主机提供商将不允许我进行此类活动。是的,完全正确。我必须每秒钟检查一次数据库。是否有其他解决方案。因为一次又一次的查询会变得非常麻烦。你只需在接下来的X分钟内每X分钟检查一次它需要运行的时间。比如:从时间max\u execution\u time参数设置为非常高的值(我不确定绝对最大值是什么…),以及
set\u time\u limit()
函数和可能的其他变量。例如,如果您希望脚本运行一整周或一个月,这不是一个有效的解决方案,但它可以在非常延迟的循环中工作,以缩短执行时间