【问题标题】:Stopping a php script that's running in the background停止在后台运行的 php 脚本
【发布时间】:2013-05-14 14:42:51
【问题描述】:

我一直在关注一些关于将 php 脚本作为后台进程运行和管理的教程。我一直在玩下面的脚本。

<?php
$count = 0;
while(true){
    $count = $count + 1;
    file_put_contents('daemon1.log', $count, FILE_APPEND);
    sleep(1);

}
?>

当我在浏览器窗口中运行此导航到它的 url,然后关闭窗口时,它似乎继续运行。这是典型的 php 脚本吗?在后台运行后如何停止此进程?

【问题讨论】:

  • 是的,这通常是基本行为,但要知道有一个执行时间限制(默认值为 30 秒),可以使用 set_time_limit 函数进行更改

标签: php background daemon kill


【解决方案1】:

当我在浏览器窗口中运行此导航到其 URL 并关闭窗口时,它似乎继续运行。这是典型的 PHP 脚本吗?

它将继续运行,因为它仍在工作

当达到最大执行时间或内存限制时,它将死亡。

如何在后台运行此进程后停止它?

要停止它,请使用 exit 等构造。

【讨论】:

  • 您并没有真正回答这个问题。他不问如何停止脚本,他问当客户端与服务器断开连接时如何停止脚本
  • @MatRt 他问当客户端与服务器断开连接时如何停止脚本问题中提到的哪里?
【解决方案2】:

是的,这通常是基本行为,但要知道有一个执行时间限制(默认值为 30 秒),可以使用 set_time_limit 函数更改

如果您想管理这种配置,请查看

ignore_user_abort

这将允许您配置是否要忽略或不用户中止。 您还可以使用

检查客户端状态
connection_aborted

connection_aborted documentation

ignore_user_abort documentation

【讨论】: