【问题标题】:Constantly run php loop without leaving browser open在不打开浏览器的情况下不断运行 php 循环
【发布时间】:2012-06-04 04:00:44
【问题描述】:

我有一个想要不断运行的 php 循环。目前,如果您让 x.php 在浏览器中运行,那么它会永远循环。只要您打开浏览器窗口...并且效果很好。

我如何让它不断运行,而不必坐在上面打开浏览器选项卡?我希望它 24/7 全天候运行,如果它停止运行。它需要重新启动自己。

谢谢

【问题讨论】:

    标签: php while-loop daemon crontab


    【解决方案1】:

    你可以从命令行运行它吗?

    nohup php -f /path/to/x.php &
    

    使用nohup,即使用户注销,它也会继续运行。

    其他答案中的 cron 解决方案每次运行时都会启动一个新实例 - 不确定你是否想要。但是,如果脚本终止并且您想重新启动它,那么您将必须运行一个单独的守护程序来检查它是否正在运行,如果没有,则启动它。您可以制作一个简单的脚本来执行检查并开始运行它,然后 cron 让该脚本每隔 5 分钟运行一次,或者按您希望的频率运行。

    【讨论】:

      【解决方案2】:

      这取决于你如何触发 PHP。

      如果您希望它在浏览器中开始执行,您有多种选择。您可以在后台启动一个新进程(例如,使用exec 调用一个shell 脚本,这会产生另一个php 进程),或者您可以尝试提供的ignore_user_abort() 方法。

      ignore_user_abort(true) 将完全按照它在锡上说的做,如果用户中止页面请求(它将无休止地运行),后端 PHP 进程将不会注意到这一点。请注意,它并非在所有情况下都有效,例如,您不能将任何输出发送回浏览器。显然这是因为管道关闭了,但我的意思是它不是可捕获的错误,脚本将停止执行。

      如果您不是在浏览器中启动它,我会推荐这样的东西,我会建议使用带有自定义脚本的 cron。我会使用每分钟运行的 cron 脚本来完成。该脚本最初将使用 PID 文件创建 PHP 进程,PHP 将处理您需要执行的任何操作。脚本的每次后续运行,它都会检查 PID 文件是否存在,如果存在,它会检查进程是否处于活动状态。如果没有,它将按照最初的计划重复创建进程/PID 文件。

      【讨论】:

        【解决方案3】:

        了解cron jobs。在他们的帮助下,您可以执行任何 php 脚本以 24/7 全天候运行。

        【讨论】:

          【解决方案4】:

          不太确定您要完成什么,但听起来您想要运行的是一个脚本?如果是这样,您想为它创建一个 cron 选项卡。语法可以在这里找到:

          http://content.hccfl.edu/pollock/unix/crontab.htm

          一个例子可能是:

          5/* * * * 1 /usr/bin/php -q /location/to/your/script/file.php
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-07-13
            • 2019-06-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多