【问题标题】:PHP perform action every X minutesPHP 每 X 分钟执行一次操作
【发布时间】:2013-03-15 08:29:37
【问题描述】:

我制作了一个 PHP 脚本,它从 twitter 获取推文并将它们保存到一个文件中以供使用(作为 JSON)。 问题是我在执行脚本时只得到一次推文,但我想大约每 4-5 分钟得到一次。

我查看了sleep,但这只会延迟浏览器并执行一次操作。 我希望 4 分钟执行一次,而不是延迟后执行一次。

我也研究了 cron,但我要运行我的应用程序的服务器不允许我使用 cron。

TL;DR:有人知道在第一次执行后每 X 分钟执行一次 php 脚本的好方法吗?

【问题讨论】:

  • 某种 cron 是解决此类问题的唯一实用解决方案。
  • 你别无选择,只能在这里使用 cron 或类似的东西。 PHP 本身没什么可提供的。
  • 服务器上没有 crons 会破坏交易。 PHP 需要 crons。
  • 然后在本地机器上运行 cron 并让它调用你的实时服务器:)

标签: php api


【解决方案1】:

最好的办法是安排一个任务来每 x 分钟调用一次你的 PHP 页面,而不是试图保持一个线程打开。看看CRON JOB

如果您将页面设为可公开访问,则无需从服务器执行计划任务。

【讨论】:

  • 请再次阅读我的问题:“我也查看了 cron,但我要运行我的应用程序的服务器不允许我使用 cron。”
  • 我应该添加 CRON 作业不需要在该服务器上。你可以暴露它并从任何地方调用它。甚至在您的本地 PC 上设置一个计划作业,以使用作为参数传入的地址来执行您的浏览器。
【解决方案2】:

您可以设置一个 Web 监控服务(有些是免费的,例如 Pingdom),每 X 分钟向您的页面发出一次 HTTP 请求,这应该可以解决问题。

【讨论】:

    【解决方案3】:

    有些供应商只为您运行 cron 作业。调查一下,他们可以每隔 x 分钟调用一次你的 php 脚本。

    【讨论】:

      【解决方案4】:

      在没有 cron 的情况下你所做的一切都是 hack。

      可以

      while (1) {
        process(...)
        sleep(4*60)
      }
      

      但是你会遇到 PHP 执行时间限制的问题。

      也许可以让您的脚本执行一次操作,然后每 4 分钟从支持 cron 的主机调用一次?

      【讨论】:

        【解决方案5】:

        我自己设法解决了这个问题。 正如我的问题所述,Javascript 和 Jquery 也是可行的解决方案。 我使用setInterval 每 X 分钟在我的 twitter.php 文件上执行一次 $.get。

        【讨论】:

        • 但是您需要始终保持此浏览器窗口打开。使用 cron,您可以让它在后台运行而没有可见的 UI。
        • @DaveHogan 这不是一个可行的解决方案,因为我无法使用 cron,无论它运行得如何。
        • 我还是不明白为什么你不能使用cron。您的主机不允许,这很好,我理解。我在回答中想说的是,您可以在世界任何地方使用另一台 PC 在规定的时间段内访问您的页面。
        • 我从未说过您的解决方案是错误的。我的解决方案和你的解决方案之间的区别在于我知道如何制作我的解决方案,而维基百科除了如何编写代码之外没有解释任何内容。
        • 那是一个不同的问题
        猜你喜欢
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-10
        • 2016-11-21
        相关资源
        最近更新 更多