Сегодня 11 мая, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7272
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Сайт Ильи Азарова.
Сайт Ильи Азарова.
Голосов: 2
Адрес блога: http://brainstorm.name
Добавлен: 2008-03-13 01:05:02
 

PHP. var_dump структуры с кучей указателей и рекурсия. Для чего действительно полезен xdebug

2012-02-23 16:56:35 (читать в оригинале)

PHP
Drupal
Krumo
var_dump

Данная ситуация довольно редкая, однако все же встречается. Есть некая переменная, для которой надо посмотреть ее структуру. 

Мы начинаем делать

var_dump($fields);

и садимся в лужу, видя сообщение в логе сервера:

[Thu Feb 23 16:21:07 2012] [error] [client 127.0.0.1] PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 78045652 bytes) in /web/site1/includes/theme.inc on line 1080, referer: http://localhost/site1/

Что же произошло. В $fields где-то в глубине обнаружился указатель на объект который уже есть в fields и описан выше. И var_dump начинает рекурсивно "бегать" по структуре объекта, пока не сожрет всю память.

Получается, мы не можем посмотреть "что там внутри", без описания оберток. В drupal есть модуль devel, который использует библиотеку krumo, но в тех версиях, которые я видел - тоже нет лимитов глубины прохода.

Проблема решается установкой xdebug и использованием функции xdebug_var_dump(). У этого модуля можно задать глубину показа "внутренностей" в переменной xdebug.var_display_max_depth и указать количество объектов на конкретном уровне, которые можно показывать переменной xdebug.var_display_max_children.

Таким образом, можно не городить свои обертки для дампов. 

PS. Пишу это в качестве напоминания для себя.

PPS. Удивительно, до сих пор в PHP не предусмотрели штатно уровни вложенности в функции var_dump.

 




 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»
Изменения рейтинга
Категория «Блогосфера»
Взлеты Топ 5
+1241
1261
Robin_Bad
+1175
1263
Futurolog
+1090
1094
MySQL Performance Blog
+1028
1098
Ksanexx
+1023
1097
Refinado
Падения Топ 5


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.