Я хочу знать, какие функции вызывают и какое время каждый запрос принимает для приложения, которое работает на 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 может написать файл профилирования, который вы можете проанализировать в kcachegrind или wincachegrind .
Это зависит от того, хотите ли вы активный или пассивный профилирование.
Пассивные инструменты, такие как New Relic, работают тихо в фоновом режиме и собирают небольшую информацию обо всех запросах, жертвуя небольшим количеством вычислительных ресурсов. Как правило, они имеют больше информации о пакете всего сервера. Они обычно используются в производственных средах, которые звучат так, как вам нужно.
Активные профилировщики используются для разработки и будут запускаться только один раз за запрос, собирая много информации о части приложения, над которым вы работаете, ценой большого удара производительности. Наиболее распространенным активным профилировщиком PHP является, вероятно, 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