php - 影响关闭函数中的退出代码

标签 php error-handling exit

我正在使用一个连接到远程服务的库。如果连接意外终止,该库将生成 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/

相关文章:

php - 我应该如何处理Codeigniter应用程序中的错误

design-patterns - 内部或类外处理错误?

php - 导入CSV数据到MYSQL

php - 如何将变量从 MYSQL 结果转换为同名的 PHP 变量?

php - 如何在 PHP 中将十六进制值转换为有符号整数?

php - 如何在脚本过程中管理多个错误

c - 选择合适的错误报告机制 : How can I change a macro at compile time?

C++:执行一个 while 循环,直到按下一个键,例如Esc键?

qt - 在 Qt 上更新程序后重新启动应用程序

php - DateTime 使用不正确的时区