Влияние кода выхода в функции отключения

Я использую библиотеку, которая подключается к удаленному сервису. Библиотека сгенерирует PHP Fatal error / Uncaught ErrorException в случае неожиданного прекращения соединения.

Мой PHP-скрипт работает как демон (через Systemd), поэтому я хотел бы через некоторое время автоматически перезапустить демон для повторного подключения. Все это настраивается в Systemd, поэтому, если PHP выходит со статусом 4, демон будет перезапущен через некоторое время.

PHP использует код выхода 255 по умолчанию для фатальных ошибок, поэтому я решил использовать функцию выключения, подобную следующей:

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);

Но что бы я ни пытался, я никак не могу повлиять на код выхода. Я не нашел ничего полезного в документация.

Есть ли какой-либо известный способ манипулировать кодом выхода в функции завершения работы или другими способами после того, как фатальная ошибка уже сгенерирована?

1

Решение

Это ошибка в 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 на этот ответ), чтобы увидеть, действительно ли исправлена ​​ошибка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]