Профилирование PHP в apache

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

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

Приложение работает, его нельзя остановить.
Поэтому мне нужно получить информацию в самой рабочей среде.
Заранее спасибо.

Одним из наиболее используемых отраслевых инструментов для этого является: http://www.xdebug.org/

Я использовал его религиозно уже давно! На первой странице он делает следующее:

«Расширение Xdebug помогает отлаживать ваш скрипт, предоставляя много полезной информации об отладке. Информация об отладке, которую может предоставить Xdebug, включает в себя следующее:

* stack traces and function traces in error messages with: o full parameter display for user defined functions o function name, file name and line indications o support for member functions * memory allocation * protection for infinite recursions" 

Есть пара инструментов профилирования PHP,
такие как

  • Xdebug
  • Particletree

Xdebug может написать файл профилирования, который вы можете проанализировать в kcachegrind или wincachegrind .

Это зависит от того, хотите ли вы активный или пассивный профилирование.

Пассивные инструменты, такие как New Relic, работают тихо в фоновом режиме и собирают небольшую информацию обо всех запросах, жертвуя небольшим количеством вычислительных ресурсов. Как правило, они имеют больше информации о пакете всего сервера. Они обычно используются в производственных средах, которые звучат так, как вам нужно.

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

Способы анализа данных из Xdebug:

ПРИМЕЧАНИЕ. Если вы используете виртуальную машину, бродягу, докер и т. Д., Убедитесь, что вы устанавливаете выходной каталог на общий том, доступный за пределами виртуальной машины

например

(php.ini) xdebug.profiler_output_dir = "/project_root/tmp"

Если вы используете PHPStorm:

  • Tools > Analyse Xdebug Profiler snapshot...

Для тех, кто использует Xdebug для MacOS :

С помощью homebrew установите qcachegrind и AppViz

  • brew install qcachegrind

  • brew install graphviz

Затем запустите его из командной строки:

qcachegrind cachegrind.out.1394

ИЛИ просто запустите qcachegrind и откройте файл cachegrind, сгенерированный xdebug, с помощью навигатора GUI