有没有Cron Jobs替代方案?

时间:2011-01-11 20:05:00

标签: php cron jobs

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

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

那么,我该怎么做呢?

8 个答案:

答案 0 :(得分:7)

即使问题是在不久前发布的,我也遇到了同样的问题,但找到了一个解决方案(基于Kissaki's answer,谢谢!)并认为我会在这里发布给所有仍在寻找可能的人溶液。

<强>先决条件:

  • SSH访问
  • 的Python

代码(python):

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

答案 1 :(得分:2)

取决于您对该框的访问权限。

PHP本身无法独立运行。你可以做一个试图不断增加执行时间,睡觉和定期检查新工作的脚本。但这是次优的,因为您必须通过浏览器访问它一次,并且脚本必须确保它只运行一次。

使用shell访问,您可以在shell上运行php脚本,这将阻止它从公共可调用,并且必须通过webbrowser运行它。

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

Cron作业不应该总是使服务器变慢。这取决于运行的工作。如果这是你的工作如此昂贵,你的管理员可能无法解决关闭的cron工作并且无论如何再次放慢服务器的速度,并且可能会采取进一步措施来阻止你解决。

答案 2 :(得分:1)

Subscibe到(免费)网站监控服务,并安排你的[url] /cron.php。您可以让您的网页页面返回有意义的内容,并配置监控服务以通知您该响应。

答案 3 :(得分:0)

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

我得到它,它是一个网络服务,它会通过您设置的时间表唤起您的网站网址。

在这里发现了这件事 - https://stackoverflow.com/a/6853113/123618

答案 4 :(得分:0)

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

如果您的应用程序频繁执行数据库操作,则可以维护一个单独的表,其中一列将作为运行脚本的度量。示例如下

表CRON_RUN

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

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

答案 5 :(得分:0)

您可以使用AWS Lambda进行操作。 使用Amazon Web Services(AWS),我们可以将所有cron作业移至EC2 Linux服务器中。 通过3个步骤将Cron作业移至无服务器: [https://thenewstack.io/move-your-cron-jobs-to-serverless-in-3-steps/][1]

答案 6 :(得分:0)

Linux有几种Cron替代品。 喜欢,

  1. Anacron-Anacron与cron一样,是一个定期的命令调度程序。唯一的区别是它不需要您的计算机始终处于运行状态。

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

  3. Hcron

  4. 工作人员 等等。

  

有关更多信息,请参阅this article

答案 7 :(得分:-2)

如果你有很多访问者,只需在上次访问时写入数据库,如果嵌套时间更需要时间 - 运行cron。但实际上 - 找到新的主机。