php Cron工作有替代品吗?

pkln4tw6  于 2023-06-20  发布在  PHP
关注(0)|答案(5)|浏览(149)

Cron作业在我的服务器上关闭,服务器管理员不接受打开它。因为,cron作业会减慢服务器等。所以我需要另一个选择。
我必须每2分钟运行一个php文件(cron.php)。
那么,我该怎么做呢?

zpjtge22

zpjtge221#

尽管这个问题是前一段时间发布的,但我也遇到了同样的问题,但找到了解决方案(基于Kissaki's answer,谢谢!),并认为我会张贴在这里的任何人仍然在寻找一个可能的解决方案。

前提条件:

  • SSH访问
  • Python
    代码(python):
from subprocess import call
import time
while True:
    call(["php","cron.php"])
    time.sleep(120)
ct2axkht

ct2axkht2#

这取决于你对黑盒的访问权限。
PHP本身将无法很好地独立运行。你可以做一个脚本,试图不断增加它的执行时间,睡眠和定期检查新的作业。但这是次优的,因为您必须通过浏览器访问它一次,并且脚本必须确保它只运行一次。
通过shell访问,你可以在shell上运行php脚本,这将防止它从公共调用,并必须通过web浏览器运行它。
通过shell访问,您还可以运行一个为您提供(cron)服务的程序。无论是Java、Python还是其他程序。
Cron作业不应该总是拖慢服务器。这取决于运行的作业。如果是你的工作是如此昂贵,你的管理员可能不会与周围关闭的cron工作和缓慢的服务器再次工作,无论如何,可能会采取进一步的行动,以防止你的工作。

xv8emn3q

xv8emn3q3#

Linux有几个Cron替代品。比如

  1. Anacron是一个周期性的命令调度器,就像cron一样。唯一的区别是,它不需要您的计算机始终运行。
  2. fcron - Fcron是cron和anacron中最好的。它不需要您的计算机24×7运行,并且可以按小时或分钟处理任务。
    1.赫克伦
  3. Jobber等
    有关将来的阅读,请参阅this article
06odsfpq

06odsfpq4#

只是对答案的补充。很少见的情况。
如果您的应用程序具有频繁的数据库操作量,那么您可以维护一个单独的表,其中的一列将作为运行脚本时的度量。示例如下
表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脚本。

9w11ddsr

9w11ddsr5#

最佳解决方案:-使用序列化文件保存状态或数据库。在每次请求时检查此文件,并在需要时运行脚本。如果您需要更广泛地管理这些作业并运行shell命令,并且您具有安装服务的权限。使用SartajPHP NativeApp作为服务。您还可以通过浏览器控制您的作业,查看实时错误并修复它们。

相关问题