PHP эквивалентен медленному журналу запросов MySQL? - PullRequest
8 голосов
/ 04 июня 2009

Я работаю над оптимизацией своего сайта, и у меня уже несколько дней регистрируются медленные запросы MySQL, но после прохождения> 260 миллионов запросов было зарегистрировано только 6 медленных запросов, и это были специальные, выполненные мной на phpMyAdmin. Мне интересно, есть ли что-то, чтобы регистрировать медленное время выполнения страниц PHP, чтобы я мог найти определенные страницы, которые занимают ресурсы, а не конкретные запросы.

Ответы [ 5 ]

10 голосов
/ 04 июня 2009

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

Если вы хотите измерять скорости в продуктивной среде, я бы просто провел измерения вручную. microtime() - функция для этих вещей в PHP. Предполагая, что у вас есть header.php и footer.php, которые вызываются всеми php-скриптами:

# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);

# In your footer.php (or tpl)
file_put_contents(
    '/tmp/my_profiling_results.txt',
    microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
    FILE_APPEND
);
5 голосов
/ 14 июля 2010

как насчет auto_prepend_file и auto_append_file, только что написал пост об этом http://blog.xrado.si/post/php-slow-log

4 голосов
/ 04 июня 2009

Вы можете обернуть свои сценарии в простой таймер, например:

/*in your header or at the top of the page*/
$time_start = microtime(true); 

/* your script goes here */

/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;   
echo "It took $time seconds\n";

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

1 голос
/ 30 октября 2013

Если вы используете FastCGI для выполнения ваших PHP-сценариев, вы можете использовать FastCGI Process Manager (FPM, php-fpm), который также поддерживает так называемый «slowlog».

Вы можете включить его в конфигурации php вашего php-fpm (для debian это /etc/php5/fpm/pool.d/www.conf) с помощью параметров конфигурации: request_slowlog_timeout и slowlog.

request_slowlog_timeout

Тайм-аут для обслуживания одного запроса, после которого обратная трассировка PHP будет выгружена в файл 'slowlog'. Значение «0» означает 'Off'. Доступные единицы измерения: s (секунды) (по умолчанию), m (минуты), h (наши) или (д) AYS. Значение по умолчанию: 0.

slowlog

Файл журнала для медленных запросов. Значение по умолчанию: # INSTALL_PREFIX # / log / php-fpm.log.slow.

из http://php.net/manual/en/install.fpm.configuration.php

Также см .: http://php.net/manual/en/install.fpm.php и http://rtcamp.com/tutorials/php/fpm-slow-log/

1 голос
/ 28 сентября 2009

Не могли бы вы зарегистрировать функцию отключения, которая вызывает завершение таймера? http://us3.php.net/register_shutdown_function Таким образом, вам нужно запускать таймер только там, где, по вашему мнению, может быть проблема.

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