Профилирование PHP-кода - PullRequest
       21

Профилирование PHP-кода

34 голосов
/ 25 сентября 2008

Я хотел бы найти способ определить, сколько времени занимает выполнение каждой функции в PHP и каждого файла в PHP. У меня есть старое унаследованное PHP-приложение, в котором я пытаюсь найти «грубые места», и поэтому я хотел бы определить, какие подпрограммы и страницы загружаются очень долго, объективно.

Существуют ли какие-либо готовые инструменты, позволяющие это сделать, или я застрял, используя microtime и создавая свою собственную среду профилирования?

Ответы [ 9 ]

42 голосов
/ 25 сентября 2008

На прошлой неделе я действительно провел некоторую работу по оптимизации. XDebug - действительно путь.

Просто включите его как расширение (по какой-то причине оно не будет работать с ze_extension на моей машине с Windows), настройте ваш php.ini с помощью xdebug.profiler_enable_trigger = On и вызовите ваши обычные URL-адреса с помощью XDEBUG_PROFILE = 1 как либо get или переменная post для профилирования самого запроса. Нет ничего проще!

Кроме того, я могу порекомендовать webgrind , проект Google Summer Of Code, основанный на сети (php), который может читать и анализировать ваши выходные файлы отладки!

7 голосов
/ 28 июля 2010

Вот хороший совет.

Когда вы используете XDebug для профилирования вашего PHP, настройте profiler_trigger и используйте его в закладке для запуска профилировщика XDebug;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}
6 голосов
/ 25 сентября 2008

взгляните на xdebug , который позволяет углубленное профилирование. И вот объяснение того, как использовать xdebug.

Профилировщик Xdebug - мощный инструмент это дает вам возможность анализировать ваш код PHP и определить узкие места или вообще увидеть, какие части вашего кода медленные и могут используйте повышение скорости. Профилировщик в Xdebug 2 выводит информацию о профилировании в форме совместимого с cachegrind файл.

Слава SchizoDuckie за упоминание Webgrind . Это первое, что я слышал об этом. Очень полезно (+1).

В противном случае вы можете использовать kcachegrind в Linux или его менее производном wincachegrind . Оба эти приложения будут читать выходные файлы профилировщика xdebug и суммировать их для вашего удобства просмотра.

3 голосов
/ 25 сентября 2008

XDebug хорош, но не так прост в использовании или настройке IMO.

Профилировщик, встроенный в Zend Studio, очень прост в использовании. Вы просто нажимаете кнопку на панели инструментов браузера и BAM , у вас есть код профиля. Возможно, он не такой глубокий, как дамп CacheGrind, но он всегда был достаточно хорош для меня.

Вам также нужно настроить Zend Platform, но это просто и бесплатно для использования в разработке - вам все равно придется платить за лицензию Zend Studio.

3 голосов
/ 25 сентября 2008

Я однажды видел скриншот для Zend Core . Выглядит довольно хорошо, но на самом деле это стоит денег, я не знаю, если это проблема для вас.

2 голосов
/ 16 октября 2008

В дополнение к мощным возможностям отладки в реальном времени, PhpED из NuSphere (www.nusphere.com) имеет встроенный профилировщик, который можно запустить одним щелчком мыши внутри IDE.

2 голосов
/ 25 сентября 2008

Функции профилирования xdebug довольно хороши. Если у вас есть возможность сохранить выходные данные в формате valgrind, вы можете использовать что-то вроде KCachegrind или Wincachegrind для просмотра графа вызовов и, если вы визуальный тип людей, более легко понять, что происходит.

1 голос
/ 25 сентября 2008

Если вы устанавливаете расширение xdebug, вы можете настроить его для экспорта профилей запуска, которые вы можете прочитать в WinCacheGrind (в Windows). Я не могу вспомнить название приложения, которое читает файлы в Linux.

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

Самое простое решение - использовать Zend Profiler, вам не нужна Zend Platform для использования, вы можете запустить его прямо из браузера, он достаточно точен и обладает большинством необходимых вам функций, и он интегрирован в Zend Studio

...