计划在没有cron的情况下执行PHP脚本


scheduled PHP script execution without cron

我有一个PHP脚本,需要在每个月底前执行。如果不在类Unix系统上使用cron或在Windows系统上使用任务调度程序,我该如何做到这一点?php中不是有一些内置功能吗?因为使用cron/scheduller并不是一种很容易移植的方式。

唯一的其他方法是在加载网站时触发它。例如,您可以存储脚本上次运行的时间。然后,每次加载页面时,你都会检查是否到了运行它的时间。如果是,那么你会将它作为页面加载的一部分来运行。当然,这取决于(1)任务是一个非常快速的任务,以及(2)任务不必完全按计划运行,直到第二个。这基本上就是wp_cron()在Wordpress中的工作方式。

Php只是一种脚本语言,而不是一个知道时间并可能在所需时刻触发事件的过程。

一旦你在服务器上安顿下来,你就不必担心可移植性:迁移到另一个地方不会是一个自动的过程,因为环境可能会非常不同。

所以,坚持使用cron,或者为自己编写一个与操作系统无关的层。

在我工作的系统中,我有一个小模块保存了最后一次运行的脚本,每次运行主脚本时,它都会检查脚本是否应该运行。如果应该的话,它会在执行任何其他操作之前执行,所以系统无论如何都有正确的数据,即使周期性脚本没有"按时"运行。它还检查脚本是否不应该运行多次,并在需要时运行多次。有点粗糙,但除了PHP/mysql之外,没有任何东西都能产生正确的结果。