是否有任何 Cron 工作替代方案?

Posted

技术标签:

【中文标题】是否有任何 Cron 工作替代方案?【英文标题】:Are There Any Cron Jobs Alternative? 【发布时间】:2011-06-07 10:00:53 【问题描述】:

我的服务器上的 Cron 作业已关闭,服务器管理员不接受打开它。因为,cron 作业会减慢服务器等。所以,我需要一个替代方案。

我必须每 2 分钟运行一次 php 文件 (cron.php)。

那么,我该怎么做呢?

【问题讨论】:

cron.php 是从 Web 服务器提供的,还是只是一个本地脚本? 简短的回答是获得更好的主机... @Jesse,它由网络服务器提供,可通过浏览器访问 订阅(免费)网站监控服务,并安排您的 [url]/cron.php。您可以让您的网页返回一些有意义的内容,并配置监控服务以通知您该响应。 【参考方案1】:

取决于您对盒子的访问权限。

PHP 本身不能很好地独立运行。您可以编写一个脚本,尝试不断增加其执行时间,定期休眠并检查新作业。但这是次优的,因为您必须通过浏览器访问它一次,并且脚本必须确保它只运行一次。

通过 shell 访问,您可以在 shell 上运行 php 脚本,这将防止它被公共调用并且必须通过网络浏览器运行它。

通过 shell 访问,您还可以运行一个为您提供 (cron) 服务的程序。无论是 Java、Python 还是其他程序。

Cron 作业不应该总是降低服务器的速度。这取决于正在运行的作业。如果是您的工作如此昂贵,那么您的管理员可能无法解决已关闭的 cron 工作并再次降低服务器速度,并且可能会采取进一步的措施来阻止您解决问题。

【讨论】:

【参考方案2】:

看来这可能是您的解决方案 - Free & Easy Cronjob Execution.

据我了解,它是一项网络服务,可通过您设置的时间表唤起您的网站 URL。

在这里找到了关于这件事的提及 - https://***.com/a/6853113/123618

【讨论】:

【参考方案3】:

尽管问题是不久前发布的,但我也遇到了同样的问题,但找到了解决方案(基于Kissaki's answer,谢谢!)并认为我会将其发布在这里,供仍在寻找可能解决方案的任何人使用。

先决条件:

SSH 访问 Python

代码(python):

from subprocess import call
import time
while True:
    call(["php","cron.php"])
    time.sleep(120)

【讨论】:

这很整洁!感谢分享! 所以我需要通过 ssh 调用 python 脚本一次? 正确。如果你支持“屏幕”,你也可以在后台进行。 你是怎么杀死它的?【参考方案4】:

只是对答案的补充。罕见情况。

如果您的应用程序有频繁的数据库操作,那么您可以维护一个单独的表,其中一列将作为何时运行脚本的衡量标准。示例如下

表 CRON_RUN

last_run
----------
12-09-2018 11:55:12 (dd-mm-yyyy H:M:S)

现在在您的应用程序中,每次发生频繁的数据库操作时都可以执行检查,并检查 last_run 日期和当前日期是否有 x 差异。 X 是您要运行脚本的时间差。在你的情况下 2 分钟。此外,如果差异大于或等于 2 分钟,则更新语句将运行以使用当前日期时间更新 last_run 列,下一条语句将是您的 cron.php 脚本。

【讨论】:

【参考方案5】:

Linux 有多种 Cron 替代方案。 喜欢,

    Anacron - Anacron 是一个与 cron 类似的周期性命令调度程序。唯一的区别是它不需要您的计算机一直在运行。

    fcron - Fcron 是 cron 和 anacron 中最好的。它不需要您的计算机 24×7 全天候运行,并且可以每小时或每分钟处理任务。

    Hcron

    求职者 等等

未来阅读请参阅this article。

【讨论】:

以上是关于是否有任何 Cron 工作替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

是否有 VB.Net 替代方案可以跳过没有 GoTo Next 的控制块? [复制]

使用 fstream 的替代方案

CGContextDrawImage 的优化替代方案

Android 聊天是不是有任何 Openfire smack 替代方案?

.NET Core 的 MiniProfiler 是不是有任何可行的替代方案?

GOF 单例模式是不是有任何可行的替代方案?