Профилирование PHP-кода
Я хотел бы найти способ определить, как долго каждая функция в PHP и каждый файл в PHP запускается. У меня есть старое устаревшее PHP-приложение, в котором я пытаюсь найти "грубые пятна", и поэтому я хотел бы найти, какие подпрограммы и страницы занимают очень много времени, чтобы загрузить, объективно.
Есть ли какие-либо готовые инструменты, которые позволяют это, или я придерживаюсь с помощью microtime, и создаю свою собственную структуру профилирования?
Ответы
Ответ 1
На прошлой неделе я действительно немного оптимизировал работу. XDebug действительно способ пойти.
Просто включите его как расширение (по какой-то причине он не будет работать с ze_extension на моей машине Windows), настройте php.ini с помощью xdebug.profiler_enable_trigger = Вкл и вызовите обычные URL-адреса с помощью XDEBUG_PROFILE = 1 как get или переменную post для профилирования этого запроса. Там ничего проще!
Кроме того, я могу действительно рекомендовать webgrind, веб-сайт (php) google Summer Of Code, который может читать и анализировать ваш отладочный вывод файлы!
Ответ 2
Вот хороший совет.
Когда вы используете 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';}
Ответ 3
загляните в xdebug, что позволяет выполнить углубленное профилирование. И здесь объяснение о том, как использовать xdebug.
Xdebug Profiler - мощный инструмент что дает вам возможность анализировать ваш PHP-код и определить узких мест или, как правило, части вашего кода медленны и могут используйте ускорение скорости. Профайлер в Xdebug 2 выводит информацию профилирования в виде совместимого с кэшем файл.
Престижность SchizoDuckie для упоминания Webgrind. Это первое, что я слышал об этом. Очень полезно (+1).
В противном случае вы можете использовать kcachegrind для linux или его меньшей производной wincachegrind. Оба этих приложения будут читать выходные файлы профилировщика xdebug и суммировать их для удовольствия от просмотра.
Ответ 4
Я когда-то видел приставку для Zend Core. Выглядит неплохо, но на самом деле это стоит денег, я не знаю, была ли эта проблема для вас.
Ответ 5
XDebug хорош, но его не так просто использовать или настраивать IMO.
Профилировщик, встроенный в Zend Studio, очень прост в использовании. Вы просто нажали кнопку на панели инструментов браузера, а BAM - ваш профиль кода. возможно, не так сильно, как дамп CacheGrind, но он всегда был для меня достаточно хорошим.
Вам также нужно настроить платформу Zend, но это просто и бесплатно для разработки - вам все равно придется платить за лицензию Zend Studio.
Ответ 6
Функции профилирования xdebug довольно хороши. Если вы хотите сохранить результат в valgrind-формате, вы можете использовать что-то вроде KCachegrind или Wincachegrind для просмотра графа вызовов и, если вы являетесь визуальным человеком, легче справляйтесь с тем, что происходит.
Ответ 7
В дополнение к серьезным мощным средствам отладки в реальном времени, PhpED из NuSphere (www.nusphere.com) имеет встроенный профилировщик, который можно запускать одним щелчком мыши из среды IDE.
Ответ 8
Если вы устанавливаете расширение xdebug, вы можете настроить его для экспорта профилей запуска, которые вы можете прочитать в WinCacheGrind (в Windows). Я не могу вспомнить имя приложения, которое читает файлы в Linux.
Ответ 9
Самое простое решение - использовать Zend Profiler, вам не нужно использовать Zend Platform, вы можете запускать его прямо из своего браузера, он достаточно точен и имеет большинство функций, которые вам нужны, и он интегрирован в Zend Studio