不断运行 php 循环,而无需打开浏览器


Constantly run php loop without leaving browser open

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

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

谢谢

你能从命令行运行它吗?

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

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

其他答案中的 cron 解决方案每次运行时都会启动一个新实例 - 不确定您是否需要它。但是,如果脚本死亡并且您想要重新启动它,则必须运行一个单独的守护程序来检查它是否正在运行,如果没有,则启动它。您可以制作一个简单的脚本来执行检查并开始运行它,然后 cring 该脚本每 5 分钟运行一次,或者随心所欲地运行一次。

这取决于你如何触发 PHP。

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

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

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

阅读有关 cron 作业的信息。在他们的帮助下,您可以执行任何 php 脚本以每分钟运行 24/7。

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

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

例如:

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