Как узнать где зависает программа на PHP?

Способ простой:

  1. Установить PHP модуль xdebug (из исходников или через PEAR/PECL).
  2. Прописать его в php.ini.
  3. Перестартовать apache.

Все. Теперь в исследуемой программе можно указать:

xdebug_start_trace('/какой/то/каталог/имя-лога', XDEBUG_TRACE_APPEND);

После зависания программы перейти в указанный каталог и посмотреть лог, последняя строка в нём и есть источник зависания.

Кстати, xdebug также пишет stack traces в апачевский error_log при ошибках в программе (однако, при зависаниях это не помогает). Кроме того используя xdebug можно анализировать использование памяти, а также проследить за содержимым аргументов и переменных (о возможностях xdebug можно прочесть здесь http://www.ibm.com/developerworks/ru/library/os-php-xdebug/).


Комментарии

Оставить комментарий

Ответ на Как узнать где зависает программа на PHP?