Это не исключение, это ошибка. Существуют важные различия между исключениями и ошибками, в первую очередь ошибки не могут быть обнаружены с помощью семантики try / catch.
PHP-сценарии построены на основе парадигмы короткого времени выполнения, поэтому PHP по умолчанию настроен так, чтобы предполагать, что если сценарий выполняется более 30 секунд, его необходимо перехватить в бесконечном цикле и, следовательно, следует прервать. Это сделано для того, чтобы ошибочный сценарий PHP вызывал отказ в обслуживании либо случайно, либо по злому умыслу.
Однако сценариям иногда требуется больше времени выполнения, чем они выделены по умолчанию.
Вы можете попробовать изменить максимальное время выполнения, используя set_time_limit()
или изменив значение max_execution_time
в файле php.ini
для увеличения лимита. Вы также можете полностью снять ограничение, установив время выполнения на 0, хотя это не рекомендуется.
set_time_limit()
могут быть отключены такими механизмами, как disable_functions
, поэтому он может быть недоступен для вас, также вы не можете иметь доступ к php.ini
. Если это так, то вам следует обратиться за помощью к вашему хосту.
Исключением являются PHP-скрипты, запускаемые из командной строки . В этих условиях работы PHP-скрипты могут быть интерактивными и требовать много времени для обработки данных или ожидания ввода. По этой причине не существует ограничения max_execution_time
для сценариев, запускаемых из командной строки по умолчанию.
EDIT TO ADD : в обработке ошибок PHP 7 произошел серьезный пересмотр. Я считаю, что ошибки и исключения теперь являются подклассами Throwable. Это может сделать вышеупомянутое больше не релевантным для PHP7 +, хотя мне придется более подробно изучить особенности того, как обработка ошибок работает сейчас, чтобы быть уверенным.