Инструменты/Методы для отладки утечек памяти/Ошибок использования в PHP
У меня есть скрипт командной строки, который запускает array()
файлов через цикл и использует имя файла в качестве аргумента для вызова метода вспомогательного объекта.
Каждый запуск скрипта, PHPmemory_get_usage
сообщает все большее и большее число
53294264
57019624
61374624
65699176
70230600
75157152
79900392
84630472
89359264
94300016
100031176
105202448
110360808
115777528
121146976
126784824
132366952
Пока я не ошибусь с
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
Ясно, что что-то происходит с утечкой памяти или продолжает добавляться какая-то глобальная/статическая область хранения. Каков наилучший способ отладки такого рода ошибок в PHP? Здесь распространенные ситуации, когда это происходит непреднамеренно в PHP? Есть ли у xDebug какие-то волшебные опции, которые могут помочь мне точно определить это? Другие инструменты?
Лучшее, что я придумал, - это следовать цепочке выполнения и засорять базу кода вызовами memory_get_usage(), пока я не определю точную проблему, но это кажется утомительным и неэффективным подходом.
1 answers
Похоже, что Facebook xhprof обеспечивает профилирование памяти на уровне вызова функции.
(Я никогда им не пользовался, но очень хочу...)