Каков наилучший способ мониторинга функций/выполнения PHP?


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

Я знаю, что существует множество различных вариантов, включая плагины WordPress и решения, включающие firebug (firephp), но что вы, ребята, считаете лучшим подходом?

Лично я считаю, что идеальным решением было бы иметь некоторый тип кода, который можно устанавливать по умолчанию при каждой установке wordpress. Любая отладка/мониторинг/отчетность будут выполняться ТОЛЬКО в том случае, если вы добавите необязательную запись в конец URL-адреса, например ?=отладка. В целях безопасности было бы еще лучше, если бы сначала нужно было войти в админ-зону wordpress и создать временный ключ отладки, который создаст хэшированный ключ и добавит его к URL-адресу (например, debugkey=v09098v09aq2ov1a8923), который будет доступен только в течение 30 минут.

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

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

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

ОБНОВЛЕНО Запуск выделенного сервера Linux

Author: NetConstructor.com, 2011-02-08

4 answers

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

Что касается плагинов, я не тестировал его, но посмотрел на некоторые скриншоты, и он, по крайней мере, информативен: Панель отладки (плагин Wordpress) и панель отладки черного ящика (плагин Wordpress).

Еще один хук-трейсер, который не так хорошо известен: SJ Хук Профилировщик.

Я настоятельно рекомендую xdebug для систем разработки и тестирования, это приятно, если вам нужно профилировать или отлаживать материал.

 5
Author: hakre, 2011-02-09 00:42:35

XHProf (с открытым исходным кодом, часть стека Facebook для мониторинга производительности) сложно настроить (по крайней мере, для таких пользователей Windows, как я), но это очень тщательный и удобный инструмент профилирования производительности для PHP.

Я бы хотел, чтобы у него была версия win для моего локального тестового стека. :(

 2
Author: Rarst, 2011-02-09 06:50:37

Я могу только рекомендовать php-класс Krumo, который может быть добавлен в течение 10 секунд в любую установку и не зависит от какой-либо локальной установки. Так что даже если вы находитесь вне своего офиса, у вас есть с собой инструмент отладки. Просто не забудьте загрузить его после любых других файлов и загрузить с помощью if ( current_user_can('manage_options') ) krumo::enable();, чтобы ни один гость или другой пользователь не сталкивался с вашими сообщениями об отключении, если вы отлаживаете что-то, что уже запущено.

 2
Author: kaiser, 2011-02-09 11:11:49

Вы не указываете, каково ваше расположение сервера. Если вы находитесь в среде общего хостинга, у вас ограниченные возможности. Если это ваш собственный сервер, то вы можете установить различные инструменты профилирования, чтобы получить общую картину. Посмотрите на этот поток на SO для некоторых вариантов.

Кроме того, медлительность доставляемой страницы может быть результатом многих вещей, только некоторые из которых связаны с PHP/MySQL. У вас могут быть проблемы с DNS, перегрузка сети на стороне клиента или сервера, плохо запланированные страницы, на которых много JS загружается рано, а не поздно, и т. Д. и т. Д.

Чтобы протестировать основную цепочку сетевого подключения + серверную доставку базовой HTML-страницы, попробуйте использовать программу Apache Benchmark . Осторожнее! Вы можете выбить дерьмо из сервера с помощью этого щенка, и ваша хостинговая компания не будет удивлена, если вы сделаете имитацию DOS-атаки одного человека на их машину.

Обновление: ХОРОШО, выделенный сервер Linux дает вам важные опции. В частности, я удвою xdebug и его способность профилировать выполнение вашего кода. Удивительно, как быстро пара запусков под профилировщиком может пролить яркий свет на какую-то невинно выглядящую функцию, которая пережевывает машину.

Если у вас сразу ничего не выскакивает, поищите процедуры, которые, похоже, занимают больше времени, чем должны (что бы ни означало ) и/или, похоже, часто вызываются . Последнее часто может быть исправляется простым кэшированием результатов для определенных значений. Если это общая проблема, связанная с вызовом различных дорогостоящих функций с разными параметрами, вы можете посмотреть запоминание затронутые функции. Я делал это несколько раз на Python, но не на PHP. Вот статья о подходе одного человека . Там есть еще посты на эту тему.

 1
Author: Peter Rowell, 2017-05-23 12:40:05