有没有Cron Jobs替代方案?

问题描述 投票:8回答:8

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

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

那么,我该怎么做呢?

php cron jobs
8个回答
7
投票

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

先决条件:

  • SSH访问
  • 蟒蛇

代码(python):

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

2
投票

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

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

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

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

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


1
投票

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


0
投票

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

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

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


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脚本。


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]


0
投票

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

  1. Anacron - Anacron是一个周期性的命令调度程序,就像cron一样。唯一的区别是它不需要您的计算机始终运行。
  2. fcron - Fcron是cron和anacron中最好的。它不需要您的计算机24×7运行,它可以每小时或每分钟处理任务。
  3. Hcron
  4. 乔布斯等

有关未来的阅读,请参阅this article


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.