laravel — точно определить причину ошибки PHP из-за нехватки памяти (… это была var_dump ())

В течение нескольких месяцев я периодически получал сообщение об ошибке «Недостаточно памяти» в приложении, находящемся в постоянной разработке & пока что имеет около 20 пользователей.

Похоже, у меня не было никаких негативных повторений, но я наконец нашел виновника.

Я не знаю, как, но у меня было представление об ошибке 404 по умолчанию, в котором обнаружился странный код, я не уверен, как я это сделал. Это представление ошибки 404 по умолчанию вызывается платформой автоматически, если кто-то использует findOrFail () и БД не находит запись. Когда страница была недоступна в моем приложении (что и должно быть, так как некоторые материалы могут быть опубликованы / неопубликованы), это представление ошибки запускалось.

Странный код был:

<!-- <div><?php var_dump($exception); ?></div> -->
<div class="text">{{$exception->getMessage()}}</div>

Совершенно странно, я знаю.

Во-первых, html-комментарии, поскольку это блейд-файл, не применяются, поэтому вызывается var_dump, несмотря на то, что он «закомментирован».

Поэтому я заменил это на это:

{{ var_dump($exception) }}

и ошибка нехватки памяти (и ошибка 500 в браузере) может быть надежно воспроизведена.

Удаление этого, и представление 404 отдает хорошо.

Заменить его на {{ dd($exception) }} тоже отлично работает — я получаю рендер трассировки.

Так, почему строка var_dump вызывает ошибку нехватки памяти?

Что я должен сделать, чтобы исследовать это дальше?

Я на Laravel 5.3

1

Решение

Скорее всего, это происходит потому, что содержание $exception переменная большая. Когда вы выгружаете переменную, PHP попытается преобразовать ее в строковое представление. Это использует много памяти.

Я не понимаю, зачем вам нужно выводить весь объект исключения. Скорее всего, вам просто нужно сообщение (которое вы получаете $exception->getMessage(), Остальное — просто обратная трассировка и ссылки на связанные объекты и экземпляры.

1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector