【问题标题】:Trigger php file at regular time intervals - without cronjobs?定期触发 php 文件 - 没有 cronjobs?
【发布时间】:2013-04-18 10:50:30
【问题描述】:

好的,我有一个 Web 服务器和一个使用 php 的站点。我的问题是如何触发 php 文件定期运行(例如每 5 分钟一次)?

很遗憾,我的网络托管服务提供商似乎不支持 cronjobs,但对于没有 cron 访问权限的人来说,肯定有一些替代方案吗?

【问题讨论】:

  • 如果你有 Web 服务器(没有共享主机),那么你可以使用任何其他调度程序应用程序来代替 crontab
  • 我相信它是一个“虚拟专用服务器”
  • 你的服务器是哪个操作系统?
  • 这是一个 Apache 网络服务器
  • 您可以创建一个守护进程并运行它。在那个商店中,每次都会看到时间差异。如果时间差异达到 5 分钟,那么您可以调用其他脚本并重置时间变量,反之亦然。

标签: php cron


【解决方案1】:

鉴于您的要求,不,如果没有 cronjob,您将无法做到这一点。现在,如果您无法使用 cron 工具,则只需切换主机即可。

另一种选择是,您的用户在访问您的网站时实际上会触发您的操作,这意味着,如果您确定您的网站每分钟都会受到点击,那么您可以使用数据库来跟踪您的“cron 作业” ,所以当用户访问该网站时,您检查 cron 是否在过去 5 分钟内运行,如果运行,则什么也不做,否则,您运行 cron 并保存它运行到数据库时的时间戳。每次用户访问您的网站时都会发生这种情况。

但是,这是一个可怜的 cron,如果您的操作需要花费大量时间,则不应使用它,因为您的用户将不得不等待操作完成,因此如果需要时间,您的用户将离开网站.

编辑:如果它是您所说的专用服务器,您应该可以访问 shell 并从那里设置 cron。

【讨论】:

【解决方案2】:

根据您希望执行这 5 分钟的松散程度,以及您的网站是否有定期流量(每分钟至少 1 个请求),您可以考虑:

  • 在每次请求时检查上次作业运行时的数据库
  • 如果超过 5 分钟,则运行作业并更新数据库

此脚本运行得越多,您的 5 分钟就越准确。要增加此脚本的运行次数:

  • 查看每个请求中是否包含某些文件,例如 config.php。
  • 或者你有一些路由,例如所有请求都通过 index.php

【讨论】:

    【解决方案3】:

    您可以使用 PHP 中的守护程序脚本来做到这一点。

    您可以创建一个守护程序并运行它。在那个存储中,每次都会看到时间差异。如果时间差异达到 5 分钟,那么您可以调用其他脚本并重置时间变量 - 反之亦然。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      相关资源
      最近更新 更多