Ошибка не перехватывается блоком try catch - PullRequest
0 голосов
/ 08 ноября 2018
PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted
(tried to allocate 32768 bytes) in
/vendor/symfony/debug/Exception/FatalErrorException.php on line 1  PHP Stack trace:

Я получаю следующую ошибку, которая не перехватывается в блоке try catch.

use \Exception as Exception;

try {
   $this->recursiveCall();
} catch (ErrorException $ex) {
    exit;
}catch (Exception $ex) {
    exit;
}

Если поднять до memory_limit = 512M в php.ini, он работает нормально, но меня беспокоит то, что ошибка не обрабатывается.

Я читал, что вы можете написать свой собственный обратный вызов php, но я боюсь, что обработка ошибок Laravel может зависеть от этого.

Есть идеи, как решить проблему? 10x

1 Ответ

0 голосов
/ 08 ноября 2018

Catch не работает для фатальных ошибок. Вы можете использовать try-catch для исключений, но фатальные ошибки фактически «ломают» вашу программу, вы не можете просто поймать их, вы должны их решить. Не то чтобы предупреждения об исключениях не должны решаться, но они не так критичны, как фатальные ошибки.

Решением, которое я вижу, является либо оптимизация вашего запроса (может быть, добавление лимита может помочь), либо увеличение объема памяти, как вы предлагали.

Эта ошибка обычно возникает из-за «слишком большой обработки данных», поэтому либо вы сужаете данные, чтобы ускорить выполнение скрипта, либо увеличиваете лимит.

...