Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Когда вы используете 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';}

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

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

Престижность для Шизодаки для упоминание Веб-Гриндинг.Я впервые об этом слышу.Очень полезно (+1).

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top