【发布时间】:2014-07-18 15:32:12
【问题描述】:
PHP CLI 脚本是否可以检测它是否即将停止?这应该适用于使用 Ctrl + C 退出脚本,或者脚本是否自然结束。理想情况下,我正在寻找在脚本完全停止之前触发的某种回调。
我最初的想法是我可以有一个带有__destruct() 函数的类,如下所示:
<?php
class ExitHandler {
public function __destruct() {
toOut('Script Halted'); // Writes to STDOUT
}
}
$exitHandler = new ExitHandler();
// ...
?>
然而,虽然测试表明它会在脚本自然退出时触发,但如果使用 Ctrl + C 停止脚本则不会触发:
php -r "Class Abc { public function __destruct() { echo 'Bye.'; } } $x = new Abc();"
=>Bye.
php -r "Class Abc { public function __destruct() { echo 'Bye.'; } } $x = new Abc(); while(true) { sleep(1); fwrite(STDOUT, 'Tick'); }"
=>TickTickTick^C
【问题讨论】:
标签: php command-line-interface