【问题标题】:What options are there for executing a PHP script at a certain time every day?每天在特定时间执行 PHP 脚本有哪些选项?
【发布时间】:2016-06-04 11:57:59
【问题描述】:

我有一个 PHP 脚本,需要在每个工作日的特定时间运行。 cron 或 Windows 任务调度程序是执行此操作的唯一方法吗?
有没有办法在另一个 PHP 脚本中进行设置?

【问题讨论】:

  • 这正是 cron 的用途,因此使用它很有意义。

标签: php cron


【解决方案1】:

取决于时间的精确程度。我见过使用的一种技术(被称为“穷人的 cron”)是让一个经常访问的脚本(例如,一个站点的主页)在一段时间后在第一个页面加载时触发一个任务(在数据库)。

但是,如果您需要任何形式的准确性保证,cron 或 Windows 计划任务确实是最佳选择。如果您的主机不支持它们,那么是时候换一个更好的了。

【讨论】:

  • 我会说同样的话;没有什么比 cron 更好的了。 +1
【解决方案2】:

除了cronScheduled Tasks,您可以让您的PHP 脚本始终运行它。该进程应该休眠(在一个循环内),直到时间到达。然后,该过程可以执行剩余的功能/方法。或者,您可以设置另一个脚本(它将充当守护进程)来检查时间并执行另一个脚本。

【讨论】:

    【解决方案3】:

    好吧,既然网络是一种拉动机制,你必须有某种动作来触发 PHP 脚本执行。 cron 是 *nix 和 Windows 上的任务调度程序的一个选项。您也可以编写自己的具有计时器的服务,但仅在需要时,这在用于更新程序、作业等的 Windows 服务中很常见。

    您可以这样做的一种方法是在 cron 任务中为所需的每个操作调用一个 php 脚本。或者一个执行其他任务的 php 脚本。基于 Web 的任务(例如 PHP)的问题是超时。确保您的任务在 60-90 秒以内。如果没有,您可能会考虑使用 python、perl 或 ruby​​ 甚至 bash 脚本来完成这项工作,而不是 PHP 脚本。

    cron 似乎是您的最佳选择。您将不得不使用 wget 调用您的脚本。这里有例子:http://www.thesitewizard.com/general/set-cron-job.shtml

    例如,这会在每天 11 点运行脚本:

    30 11 * * * /usr/bin/wget http://www.example.com/cron.php
    

    【讨论】:

    • PHP 可以在命令行运行,避免超时问题。
    • 只需从 cron 运行它。像:30 11 * * * /usr/bin/php -f /var/www/cron.php
    【解决方案4】:

    当然,Cron 是迄今为止在 *nix 上安排任何事情的最佳方式。

    【讨论】:

      【解决方案5】:

      如果这是在您没有 cron 访问权限的远程服务器中,您可以在您的计算机上设置 cron/windows 调度程序,以打开 Web 浏览器到包含您希望运行的脚本的页面

      【讨论】:

        【解决方案6】:

        您可能想要使用 cron(或 windows 计划任务)。

        如果你真的想要,你可以设置另一个 php 脚本以无限循环连续运行(在循环中使用 sleep 命令,比如 30 秒左右),然后当你到达你想要的日期/时间时执行通过 shell 命令调用的其他脚本。虽然可能,但我想不出使用这种方法而不是 cron/计划任务的一个好理由

        【讨论】:

          【解决方案7】:

          您可以编写一个长时间运行的脚本,在预定义的时间运行您的主脚本,但这非常不必要,容易出错,而且它基本上是“用 phph 重写 cron”。

          使用真正的 cron 本身会更容易,也是更强大的解决方案。如果要打包应用程序,可以在 /etc/cron.d 中放置一个文件,其中包含运行应用程序的单个 cron 行。

          【讨论】:

            【解决方案8】:

            您需要在 Windows 下使用 cron 作业(在 Linux/Unix 下)或计划任务。您可以让另一个脚本连续运行,它会检查时间并以指定的时间间隔执行脚本,但使用操作系统提供的机制更容易管理并且可以适应重启等。 p>

            【讨论】:

              【解决方案9】:

              Uniform Server 项目在无法接受 cron 的环境中对 mimicking cron 有一些很好的建议。不过,如果 cron 完全可以选择,请使用它。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2020-11-01
                • 2010-12-31
                • 1970-01-01
                • 1970-01-01
                • 2013-07-10
                • 1970-01-01
                • 2022-08-15
                • 1970-01-01
                相关资源
                最近更新 更多