Как правильно вызвать функцию php, когда скрипт завершается, даже из-за ошибки?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как правильно вызвать функцию php, когда скрипт завершается, даже из-за ошибки?

Сообщение Anonymous »

Я уже читал несколько возможных дубликатов SO, таких как этот
и особенно этот, где hipertrtacker говорит, что Register_shutdown_function может перехватывать фатальные ошибки, а Питер Мортенсен показал код, очень похожий на мой собственный.
Может кто-нибудь объяснить, почему следующий урезанный код не вызывает мою функцию Shutdown() при завершении работы? Совершил ли я где-нибудь непреднамеренную ошибку в коде?
(Примечание: фактическая функция Shutdown() в реальном скрипте регистрирует debug_backtrace() и другие данные, чтобы узнать, куда я попал, когда получаю ошибку тайм-аута сервера)
Я намеренно устанавливаю тайм-аут равным 1 с, а затем зацикливаюсь до тех пор, пока сценарий не завершится из-за ошибки тайм-аута.


Ожидаемое поведение
  • Файл x_log.txt будет содержать слово «Начало», за которым следуют около 85 000 строк с «циклом», за которым следует строка с «Вызов завершения работы».
  • Не должно быть строки со словом «Конец», поскольку мы завершили работу из-за преднамеренной ошибки до того, как дошли до этого места.
    />
  • В журнале error_log будет показана строка «Неустранимая ошибка PHP: превышено максимальное время выполнения в 1 секунду в /home/aaaaaa/public_html/x.php в строке 11».
Фактическое поведение
  • Файл x_log.txt содержит слово «Начало», за которым следуют около 85 000 строк с «зацикливается», но ничего больше.
  • В журнале error_log отображается строка «Неустранимая ошибка PHP: максимальное время выполнения в 1 секунду превышено в /home/aaaaaa/public_html/x.php в строке 11».
Проблема
Похоже, что функция Shutdown() не вызывается для записи в журнал «Вызов завершения работы».
Вопрос
Что я делаю неправильно и как я могу заставить этот фрагмент кода работать правильно и вызывать функцию завершения работы даже при завершении работы из-за ошибки?
Среда
  • Я вызываю x.php из браузера, используя URL-адрес https://www.aaaaaa.tech/x.php
  • Это общий сервер (поэтому я не могу получить доступ к php.ini или любому другому административному материалу)
  • Я использую PHP версии 8.1.33


Подробнее здесь: https://stackoverflow.com/questions/798 ... m-an-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»