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

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

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

возможный дубликат Самый простой способ профилировать PHP-скрипт

user212218 21.03.2012 20:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
36
1
12 647
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

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

Xdebug's Profiler is a powerful tool that gives you the ability to analyze your PHP code and determine bottlenecks or generally see which parts of your code are slow and could use a speed boost. The profiler in Xdebug 2 outputs profiling information in the form of a cachegrind compatible file.

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

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

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

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

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

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

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

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

Спустя три с половиной года я сейчас с собой не согласен. Facebook предоставил открытый исходный код инструмента профилирования под названием XHProf, который действительно приятный, легкий и достаточно простой в настройке и запуске.

Marc Gear 28.02.2012 19:48
Ответ принят как подходящий

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

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

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

Альтернатива webgrind на компьютерах с Windows: Wincachegrind (настольное приложение).

Halil Özgür 18.08.2011 11:11

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

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

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

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

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