我正在使用一个连接到远程服务的库。如果连接意外终止,该库将生成 PHP fatal error /未捕获的 ErrorException。
我的 PHP 脚本作为守护程序运行(通过 Systemd),所以我想在一段时间后自动重新启动守护程序以重新连接。所有这些都是在 Systemd 中设置的,所以如果 PHP 以 状态退出4 , 守护进程将在一段时间后重新启动。
PHP 使用退出代码 255 默认情况下是 fatal error ,所以我决定使用类似于以下的关闭功能:
function shutdown() {
// Do a bit of this and that (e.g. assert
// there actually was the relevant error)
exit(4);
}
register_shutdown_function('shutdown');
trigger_error('Test', E_USER_ERROR);
但无论我尝试什么,我都无法以任何方式影响退出代码。我在 documentation 中没有发现任何有用的信息.
在已经生成 fatal error 之后,是否有任何已知方法可以在关闭函数中或通过其他方式操作退出代码?
最佳答案
这是 PHP 中的一个错误,显然多年来已多次提交:
https://bugs.php.net/bug.php?id=65275
https://bugs.php.net/bug.php?id=62725
https://bugs.php.net/bug.php?id=62294
https://bugs.php.net/bug.php?id=23509
它应该已经修复了,但是从 PHP 5.5.30 开始,我自己还在体验它。
我想你可以尝试恢复到 PHP 5.3,据报道它按预期工作。或者您可以查看最新版本之一(截至本答案的 5.6.18 或 7.0.3),以查看该错误是否确实已修复。
关于php - 影响关闭函数中的退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761512/