检测内置PHP服务器的拆卸

检测内置PHP服务器的拆卸,php,terminal,Php,Terminal,有没有办法检测正在运行的内置PHP服务器是否已停止?按Ctrl-C键或关闭终端窗口 我正在将其用于开发环境,并希望在拆卸时清理一些文件。嗯,我不知道php内置服务器功能中是否有这样做的功能 但作为一项工作,您可以使用终端完成此任务 使用符号,用于分隔两个命令,并在第一个命令完成后执行第二个命令 例如,仅当您点击CTRL+C-完成第一个命令-,此脚本才会将关闭行添加到文件status.txt中: 您可以创建一个新的php/bash脚本或任何东西来执行特定任务,并在退出服务器后执行它-在点击CTRL

有没有办法检测正在运行的内置PHP服务器是否已停止?按Ctrl-C键或关闭终端窗口


我正在将其用于开发环境,并希望在拆卸时清理一些文件。

嗯,我不知道php内置服务器功能中是否有这样做的功能

但作为一项工作,您可以使用终端完成此任务

使用
符号,用于分隔两个命令,并在第一个命令完成后执行第二个命令

例如,仅当您点击
CTRL+C
-完成第一个命令-,此脚本才会将关闭行添加到文件status.txt中:


您可以创建一个新的php/bash脚本或任何东西来执行特定任务,并在退出服务器后执行它-在点击
CTRL+C

之后,您可以注册函数,该函数将在脚本退出时由
注册关闭函数()调用

更复杂的解决方案是通过
pcntl\u signal()
获取信号。ctrl+c中的一个是
SIGINT

pcntl_signal(SIGINT, "signalHandler");

function signalHandler($signal) {
    switch($signal) {
        case SIGINT:
            print "Caught SIGINT\n";
            exit;
    }
}

清理代码是否也会在尚未关闭的服务器上运行?或者您打算使用一个单独的执行环境来执行此操作?我将在启动时进行预防性清理,在关闭时再次进行清理。另外,在启动时,我正在初始化一个文件监视程序,以检测tmp文件夹中所有文件的更改。使用hassan的解决方案,我可以让文件监视程序检测到关闭,执行清理并自行关闭。这是一个完美的解决方案。谢谢!简单高效。这正是我想要的。还有一件事是行不通的。在
Ctrl+C
上生成文件。但是当终端窗口关闭时,第二个命令当然不会被调用。有什么办法能让我参与到这一行动中来吗?这将更加复杂,当我回到家时,我会尝试用这个更新我的答案;关闭将在php进程结束时执行,而不是在服务器关闭或终止时执行;是的,但您可以使用自定义启动脚本包装php内置服务器,并在该脚本中处理执行和来自系统的不同信号。就像在Symfony框架中一样,您通过键入
app/console server:run
启动服务器,我认为这是最干净的解决方案。使用
register\u shutdown\u函数将在每次刷新页面时执行该函数,因此这不是正确的方法,请检查该人是否也有问题;好的,我想用它作为执行服务器的包装器。
register_shutdown_function(function() {/* Some cleanup activity */});
pcntl_signal(SIGINT, "signalHandler");

function signalHandler($signal) {
    switch($signal) {
        case SIGINT:
            print "Caught SIGINT\n";
            exit;
    }
}