Лекция
Привет, Вы узнаете о том , что такое php анализ медленного выполнения скриптов, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое php анализ медленного выполнения скриптов, методы оптимизации , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend) .
Медленная работа PHP-скриптов — одна из самых распространенных проблем в веб-разработке. Она влияет на скорость загрузки страниц, пользовательский опыт и даже SEO. Чтобы эффективно решать эту проблему, важно не только находить «узкие места», но и понимать причины их возникновения.

Если вы опытный PHP программист, вы должны были использовать в PHP error_log функцию некоторое время. Но сама по себе PHP не предоставляет способ выяснить , медленно выполнения сценариев. Медленные сценарии не являются те ,которые нарушают ваш сайт , но они замедляют вниз все. Использование FPM, мы можем иметь slow_log для всех таких сценариев. Давайте посмотрим , как использовать эти журналы для отладки PHP скриптов. Кроме того , мы увидим , как в PHP error_log получает перенаправляются , если он работает за FPM и Nginx.
Открыть ... ВИМ /etc/php5/fpm/pool.d/www.conf Внесите необходимые изменения , чтобы соответствовать следующие значения:
slowlog = /var/log/php5/slow.log request_slowlog_timeout = 10s
Вы можете заменить 10s с любым другим значением. Это поможет нам найти скрипты, которые выполняют медленно. изменение размеров изображения функция, сеть I / O соответствующие функции некоторые примеры, которые будут часто показывать-вверх в PHP slow_log. Его до вас, чтобы отладить их или игнорировать их, основываясь на вашем контексте.
При запуске PHP с помощью FPM, мы можем переопределить любые php.ini настройки из FPM. Открыть ... ВИМ /etc/php5/fpm/pool.d/www.conf Прокрутка вниз к нижней части и раскомментируйте / изменение следующих 3 -х линий , чтобы соответствовать значениям , приведенным ниже:
php_admin_value [error_log] = /var/log/php5/error.log php_admin_flag [log_errors] = на
Обратите внимание , что включение display_errors может привести к поломке приложений Ajax-приложений. Так что будьте очень осторожны с этим.
Вы не увидите файл /var/log/php5/error.log или нет какая - либо ошибка регистрируется , в этом файле. Ошибки в ваших скриптах для сайта будет идти вerror_log указанный для этого сайта в его Nginx конфигурации. Об этом говорит сайт https://intellect.icu . Скорее всего: /var/www/example.com/logs/error.log файл Если вы не указали error_log путь для вашего сайта, то ошибки PHP будет перейти по умолчанию error_log Nginx в. Скорее всего /var/log/nginx/error.log файл) Вы можете найти более подробную информацию здесь об отладке с Nginx .
FPM это отдельный процесс. Как и другие, он может работать в себя ошибки! Error_log FPM находится по умолчанию , но мы изменим свой путь , чтобы удовлетворить наше соглашение. Открыть ... ВИМ /etc/php5/fpm/php-fpm.conf Убедитесь , что error_log значение выглядит , как показано ниже
error_log = /var/log/php5/fpm.log
Обратите внимание , что эта error_log не связана с PHP в error_log функции ,описанной ранее.
Создание каталога журнала php5 поэтому мы можем иметь все PHP журналы в одном месте:
MkDir / Var / Журнал / php5 /
Перезагрузка PHP-FPM для изменения вступили в силу ...
служба php5-FPM перезагрузка
Лучший способ открыть отдельную оболочку на вашем сервере и использовать хвост -f команду для мониторинга журналов ... Как у нас есть несколько файлов журналов для мониторинга, вы можете просто использовать следующую команду , чтобы контролировать их все вместе ...
Tail -f /var/log/php5/*.log
slow_log помог нам много раз , чтобы исключить из наших узких применений.
Всегда помните , чтобы выключить его , когда вы закончите с отладкой. Оставляяslow_log на это не очень хорошая идея.
В первую очередь, следует найти и исправить исходный код в тех местах, где проблема возникает чаще всего. В этом нам поможет нижеследующий пример.
//чтобы отсечь лишнее, подбирается под конкретные задачи анализа лога, список функций легко определить на глаз при открытии файла лога
$functions=array(
"mysql_query",
"session_start",
);
//функция очищения пути к файлу
function clear_path($path)
{
return str_replace("/home/","",$path);
}
//открываем и парсим лог
$f=fopen("/path/to/php-fpm.log.slow.1","r");
if ($f)
while (($row=fgets($f,4096))!==false)
{
foreach ($functions as $function)
if (strpos($row,$function)!==false)
{
$path=explode(" ",$row);
$path=array_pop($path);
$path=explode(":",$path);
$result[clear_path($path )][trim($path )]++;
}
}
print_r($result);
На выходе мы получаем массив, ключами которого является путь до проблемного файла, а значениями — второй массив, ключами которого является строка в файле, значением — количество выполнений более N секунд.
Array
(
[/path/to/script1.php] => Array
(
=> 9
)
[/path/to/script2.php] => Array
(
[64] => 5
)
[/path/to/script3.php] => Array
(
[375] => 1
[468] => 39
[358] => 1
[391] => 5
[249] => 1
[154] => 2
)
)
Далее каждый уже для себя может настроить вывод в более приятной для глаза форме.
В новом формате php-fpm.slow.log так же присутствует возможность просмотра параметров, переданных скрипту, приводится само время выполнения.
script_filename = /data/www/forum.php mod=rss&fid=3378&auth=0 (0.550162 sec)
Произведя несложную модификацию примера, а именно — добавив обработку строки с script_filename, можно получить немного больше информации для отладки.
microtime()
$start = microtime(true); // код $end = microtime(true); echo $end - $start;
Позволяет измерить время выполнения отдельных участков кода.
Запись времени выполнения в лог:
error_log("Script executed in: " . ($end - $start));
Плохо:
foreach ($users as $user) {
$orders = getOrdersByUser($user['id']);
}
Хорошо:
$userIds = array_column($users, 'id'); $orders = getOrdersByUserIds($userIds);
Уменьшение количества запросов к базе данных.
Анализ медленного выполнения PHP-скриптов — это системный процесс:
Главное правило: не оптимизировать вслепую. Используйте профилировщики и реальные данные, чтобы сосредоточиться на действительно проблемных участках.
В заключение, эта статья об php анализ медленного выполнения скриптов подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое php анализ медленного выполнения скриптов, методы оптимизации и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)
Комментарии