Cron 的替代品

Cron 的替代品

我正在运行 Ubuntu Server 12.04 和 Apache 的服务器。用户通过 Java 脚本不断更新动态页面,通过 Ajax 请求将 JSON 文件下载到服务器。所有用户都需要由辅助 mySQL 数据库中的 PHP 文件提供的相同数据。为了减少服务器负载,我决定每秒更新一次 JSON 文件,并将其保存在服务器中,以静态内容(如 txt 文件)的形式提供。为此,我需要一个解决方案,每秒在服务器上运行 PHP 或任何其他语言脚本。

为了将来的需要,我无法实现这样的逻辑:在第一个请求时编译 JSON 并将它们保存起来以供同一秒内的其他请求使用。

我读过有关 Ubuntu 中的 CronTab 的信息,但它不允许我每秒执行代码。我考虑更改整个 Cron 代码,因为我找不到其他解决方案。

有人知道在 Ubuntu 或 Apache 代码中是否有解决方案吗?我需要稳定可靠的解决方案。有人听说过一种无需请求即可在服务器上执行代码的系统吗?每秒处理数据?

欢迎任何建议,即使很复杂,但为了获得可靠的结果!

答案1

我不知道你在前两段中说了什么,所以我无法判断是否有更好的解决方案(我的直觉告诉我应该有)。

要以 X 秒的间隔运行命令,有很多选项,本文将对此进行讨论Stack Overflow 问题这个Unix和Linux问题


前一个命令完成一秒后执行下一个命令

简单地说,使用这样的脚本:

#! /bin/bash
while sleep 1
do
   # your commands
done

前一个命令开始后一秒执行该命令

与上面相同,但您将命令发送到后台。如果命令完成时间超过 1 秒,这将导致命令执行重叠。

#! /bin/bash
while sleep 1
do
   (# your commands )&
done

现在,为了确保脚本正在运行,请使用一个 Upstart 工作

description "a good description"
start on runlevel [!016]
stop on runlevel [016]

respawn

exec /path/to/the/above/script

将其保存到.conf中的文件中/etc/init,例如/etc/init/some-job.conf。现在你可以使用以下命令启动脚本:

service some-job start

如果脚本退出,该respawn选项将使 Upstart 重新启动脚本(它不应该)。

相关内容