Назад | Перейти на главную страницу

Логировать PHP-скрипт, который долго обрабатывается

Я хотел бы узнать, какие страницы на моем сервере действительно медленные.

Можно ли записать в файл все страницы, отображение которых заняло более 2 секунд?

/var/log/php/php-slow.log

Или можно добавить информацию о времени, которое потребовалось для рендеринга, в файлы журнала apache?

Предполагая, что вы используете Apache; см. этот ответ о переполнении стека: Есть ли способ, чтобы Apache регистрировал медленные запросы?

Нагло украсть Брадимответ (спасибо cc-wiki):


Взгляни на http://httpd.apache.org/docs/2.2/mod/mod_log_config.html. Вы можете настроить собственный журнал, в котором будет указано время, необходимое для обслуживания запроса.

Например:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time

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

Вы должны добавить эту строку в свой httpd.conf, затем на каждом виртуальном хосте, где вы хотите ее использовать, добавьте эту строку:

CustomLog logs/access_log_time common-time

Вы также можете создать новый LogFormat, который будет содержать только то, что вы хотите, например, так:

LogFormat "\"%r\" %D" measure-time

На вашем виртуальном хосте у вас может быть несколько журналов, поэтому у вас может быть:

CustomLog logs/access_log common
CustomLog logs/access_log_time measure-time

Все, что сказал, есть огромное предостережение. Это будет измерять только время, необходимое серверу для обслуживания страницы. Это не буду укажите время, необходимое для выполнения любого javascript в браузере. Если вам нужно измерить время выполнения javascript, вам понадобится такой инструмент, как Firebug.

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

Я не уверен, можно ли регистрировать только запросы журнала и обойти этап синтаксического анализа. Может быть, но я чувствую, что это потребует значительного объема работы.

Медленное ведение журнала PHP поддерживается только с FPM SAPI.