如何在虚拟主机服务器上连续运行PHP脚本?

时间:2014-12-07 07:43:03

标签: php database cron

我有一个调度应用程序,它必须根据用户设置的时间表执行特定任务。这意味着PHP脚本必须不断检查数据库并与当前时间进行比较,看看是否有任何匹配。显然,我无法运行无限循环。

其他选项包括cron job。但是,由于我在虚拟主机服务器上运行所有这些,我不确定是否可以根据cronjob安排PHP脚本每隔几秒运行一次。我是否正确,还有另一种选择吗?或者我可以在虚拟主机上执行cronjobs(我不具备很大的灵活性)?

2 个答案:

答案 0 :(得分:0)

你可以在无限循环中运行php脚本,但我不确定这是否真的有意义。

您可以在php脚本中操作php设置以删除最长执行时间。关于cronjob我会直接调用php5可执行文件来运行你的脚本,有一些逻辑可以避免双重执行。例如。将当前时间写入锁定文件,因此,如果上次超过让我们说5分钟,则脚本崩溃并应立即启动。如果不是退出。

答案 1 :(得分:0)

Cron会让你按分钟安排,而不是第二。因此,您的脚本将需要处理整整一分钟(或更长时间)并在超时后退出,以便让下一个循环(由cron启动的任务)执行。但是,您可能会遇到重叠问题,因此您的脚本必须首先检查其自身的另一个实例是否已在运行。

您可能想要检查一下:http://kvz.io/blog/2009/01/09/create-daemons-in-php/了解如何使PHP脚本成为守护进程(因此,在后台执行而不依赖于Cron)。

您是否有可能将治疗挂钩到您的用户的“插入”操作? (即每当有人向队列添加作业时)。如果是,您可以使用后台进程(守护进程,请参阅上面的链接),它将侦听Unix套接字,并且您的添加作业操作将发布到此套接字中。这样可以避免必须从数据库中主动和重复地进行轮询,以检查是否已注册新作业。