В последнее время у меня были некоторые проблемы с ограничениями памяти PHP:
Недостаточно памяти (выделено 22544384) (попытался выделить 232 байта)
Это довольно неприятно для отладки, так как у меня не осталось много информации о том, что вызвало проблему.
Добавление функции выключения помогло
register_shutdown_function('shutdown');
затем, используя error_get_last(); Я могу получить информацию о последней ошибке, в данном случае фатальной ошибке "Out of memory", такой как номер строки и имя файла php.
Это хорошо и все, но моя php-программа сильно ориентирована на объекты. Глубина ошибки в стеке не говорит мне о структуре управления или стеке выполнения в момент ошибки. Я пробовал debug_backtrace(),, но это просто показывает мне стек во время выключения, а не стек во время ошибки.
Я знаю, что могу просто поднять ограничение памяти с помощью ini_set или изменить php.ini, но это не приближает меня к тому, чтобы понять, что потребляет столько памяти или как выглядит мой поток выполнения во время ошибки.
У кого-то есть хорошая методология для отладки ошибок памяти в продвинутых объектно-ориентированных программах PHP?