Cron Jobs在我的服务器上关闭,服务器管理员不接受打开它。因为,cron工作减慢了服务器等。所以,我需要一个替代方案。
我必须每2分钟运行一个php文件( cron.php )。
那么,我该怎么做呢?
答案 0 :(得分:7)
即使问题是在不久前发布的,我也遇到了同样的问题,但找到了一个解决方案(基于Kissaki's answer,谢谢!)并认为我会在这里发布给所有仍在寻找可能的人溶液。
<强>先决条件:强>
代码(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替代品。 喜欢,
Anacron-Anacron与cron一样,是一个定期的命令调度程序。唯一的区别是它不需要您的计算机始终处于运行状态。
fcron-Fcron是cron和anacron中最好的。不需要您的计算机运行24×7,它可以每小时或每分钟处理任务。
Hcron
工作人员 等等。
有关更多信息,请参阅this article。
答案 7 :(得分:-2)
如果你有很多访问者,只需在上次访问时写入数据库,如果嵌套时间更需要时间 - 运行cron。但实际上 - 找到新的主机。