是否有任何 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 的控制块? [复制]
Android 聊天是不是有任何 Openfire smack 替代方案?