一个永不结束的脚本(以 usleep 为单位)作为 cron 作业的替代方案 - 好主意


A script that never ends (with usleep) as an alternative for cron jobs - good idea?

我正在开发一个开源应用程序,该应用程序将分发给不同主机上的用户。其中一些主机将出于任何原因禁用 cron 作业。

现在就我个人而言,我认为有一个永远不会停止在循环中使用usleep(X)的脚本作为 cron 的替代品是一个愚蠢的想法,仅仅是因为所有关于usleep()占用 CPU 的讨论。但是,这是我不完全确定的事情。

使用这样的东西作为 cron 作业的替代方案可以吗?如果没有,我还应该去哪里看?

我不太确定使用 PHP 的 usleep 创建一个假的 cron 作业有多好(从阅读 usleep 的 PHP 页面来看,评论确实让它听起来好像它在睡眠时不会占用 CPU)。但是,还有另一种方法。

这个 cron 作业需要多及时?您可以做的是将以下内容添加到网页的<head> .

<script type="text/javascript" src="cron.js" defer="defer"></script>

使用 cron.js看起来像这样:

(new Image()).src = 'cron.php?' + (new Date).getTime();

这将在页面完成加载后加载图像(图像是 cron.php,我添加了 getTime 以防止缓存)。cron.php 文件将执行需要完成的任何任务(如果有的话)。然后它将输出一个图像(也许是一个空的透明像素)。

如果网站获得足够的点击量,即使 cron 需要及时运行,这也是可行的。

此外,如果你有一个表,或者一些其他方法来确定是否需要运行任务,你可以在文档<head>中包含 cron.js 文件之前检查是否需要运行 cron。