Узнайте, где ваш PHP-код замедляется (проблема с производительностью) - PullRequest
29 голосов
/ 11 сентября 2008

Вот мой первый вопрос на SO.

У меня есть внутреннее заявление для моей компании, которое я недавно просил поддержать. Приложения построены на PHP и довольно хорошо закодированы (OO, DB Abstraction, Smarty) и ничего лишнего.

Проблема в том, что приложения очень медленные .

Как узнать, что замедляет работу приложения? Я оптимизировал код, чтобы сделать очень мало запросов к БД, поэтому я знаю, что это PHP-код, который требует времени для выполнения. Мне нужно получить некоторые инструменты, которые могут помочь мне в этом, и разработать стратегию проверки моего кода.

Я могу выполнить проверку / стратегию самостоятельно, но мне нужно больше инструментов PHP, чтобы выяснить, где находится мое приложение.

Мысли

Ответы [ 12 ]

0 голосов
/ 11 сентября 2008

Я использую комбинацию PEAR Benchmark и log4php .

Вверху скриптов, которые я хочу профилировать, я создаю объект, который оборачивается вокруг объекта Benchmark_Timer . По всему коду я добавляю $object->setMarker("name"); вызовов, особенно в отношении подозрительного кода.

У класса-обертки есть метод destroy, который берет информацию журнала и записывает ее в log4php. Обычно я отправляю это в системный журнал (много серверов, агрегаты в один файл журнала на одном сервере).

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

Это не xdebug, но он всегда включен и дает мне возможность сравнивать любые два выполнения кода.

0 голосов
/ 11 сентября 2008

Мы используем Zend Development Environment (windows). Вчера мы разрешили всплеск использования памяти, пройдя через отладчик при запуске Process Explorer, чтобы наблюдать за активностью памяти / процессора / диска при выполнении каждой строки.

Process Explorer: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx.

ZDE включает базовый профилировщик производительности, который может отображать время, затрачиваемое на каждый вызов функции во время запросов страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...