Владельцы и разработчики сайтов на WordPress часто сталкиваются с необходимостью анализа производительности своих проектов. Создание собственного отчета по производительности позволяет не только выявить узкие места, но и получить структурированные данные для дальнейшей оптимизации. В этой статье разберем, как можно создать такой отчет с помощью кода и популярных плагинов.
Почему важен отчет по производительности WordPress
Производительность сайта напрямую влияет на пользовательский опыт, SEO и конверсию. Стандартные инструменты мониторинга часто дают лишь общие данные — время загрузки страницы, количество запросов и т.д. Но для глубокого понимания производительности нужно детализированное освещение:
- Время выполнения каждого запроса к базе данных
- Ресурсоемкость подключаемых плагинов
- Задержки на стороне сервера и клиента
- Использование памяти и лимитов PHP
Создание собственного отчета позволяет увидеть полную картину и принимать обоснованные решения по оптимизации.
Основные этапы создания отчета по производительности
Для построения отчета можно использовать следующий подход:
- Сбор метрик времени выполнения: измеряем время загрузки страниц, запросов к базе, вызова хуков и функций.
- Логирование запросов и ошибок: фиксируем SQL-запросы, ошибки PHP, HTTP-запросы.
- Анализ памяти и ресурсов: отслеживаем использование оперативной памяти и лимитов.
- Формирование отчета в удобном виде: выводим данные в админ-панели или экспортируем в CSV/JSON.
Далее рассмотрим практическую реализацию этих шагов.
Использование PHP-кода для сбора данных
Создадим простой пример, который измеряет время выполнения загрузки страницы и количество SQL-запросов. Добавим его в файл functions.php вашей темы или в собственный плагин.
add_action('shutdown', 'wpturbo_performance_report');
function wpturbo_performance_report() {
if (!current_user_can('manage_options')) return; // Только админы
global $wpdb;
$time = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
$query_count = $wpdb->num_queries;
$memory = memory_get_peak_usage(true) / 1048576; // в мегабайтах
error_log("[WPTurbo] Page load time: " . round($time, 3) . " s");
error_log("[WPTurbo] SQL queries: " . $query_count);
error_log("[WPTurbo] Peak memory usage: " . round($memory, 2) . " MB");
}Этот код при завершении загрузки страницы выводит в лог сервера основные метрики. Для просмотра лога можно использовать инструменты хостинга или плагин Debug Log.
Расширение отчета: логирование SQL-запросов
Для более детального анализа добавим логирование всех SQL-запросов, выполняемых WordPress. Это поможет выявить «тяжелые» запросы, замедляющие сайт.
add_filter('query', 'wpturbo_log_sql_queries');
function wpturbo_log_sql_queries($query) {
if (!current_user_can('manage_options')) return $query;
static $queries = [];
$queries[] = $query;
// Запись лога при загрузке страницы
add_action('shutdown', function() use (&$queries) {
if (empty($queries)) return;
$log = "[WPTurbo] SQL queries count: " . count($queries) . "\n";
foreach ($queries as $q) {
$log .= $q . "\n";
}
error_log($log);
});
return $query;
}Обратите внимание, что для крупных проектов логирование всех запросов может создавать нагрузку, поэтому используйте его выборочно.
Использование плагинов для создания отчетов
Если хочется более удобный и функциональный вариант, можно воспользоваться плагинами:
- Query Monitor — мощный инструмент для отладки и мониторинга запросов, ошибок, хуков и времени загрузки. Подробнее на WPSHOP.
- Debug Bar — добавляет панель с доступом к различным отладочным данным.
- Clearfy Pro — позволяет отключать лишние функции и мониторить производительность, интегрируется с другими инструментами оптимизации.
Эти решения дают подробные отчеты без необходимости писать код.
Как вывести отчет в админ-панели WordPress
Для удобства можно создать собственную страницу в админке и отображать там собранные данные. Пример добавления меню и вывода простого отчета:
add_action('admin_menu', 'wpturbo_add_performance_menu');
function wpturbo_add_performance_menu() {
add_menu_page('Отчет по производительности', 'WPTurbo Отчет', 'manage_options', 'wpturbo-performance', 'wpturbo_performance_page');
}
function wpturbo_performance_page() {
global $wpdb;
$time = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
$query_count = $wpdb->num_queries;
$memory = memory_get_peak_usage(true) / 1048576;
echo '<div class="wrap">';
echo '<h1>Отчет по производительности сайта</h1>';
echo '<p><strong>Время загрузки страницы:</strong> ' . round($time, 3) . ' секунд</p>';
echo '<p><strong>Количество SQL-запросов:</strong> ' . $query_count . '</p>';
echo '<p><strong>Пиковое использование памяти:</strong> ' . round($memory, 2) . ' МБ</p>';
echo '</div>';
}Этот простой интерфейс поможет быстро получить базовые показатели без доступа к серверным логам.
Советы по дальнейшему развитию отчета
Для расширения функционала можно добавить:
- Отслеживание времени выполнения отдельных хуков и функций (используя фильтры и обертки вокруг функций).
- Логирование и анализ ошибок PHP с подробной трассировкой.
- Интеграцию с WP-Cron для автоматической генерации и отправки отчетов на почту.
- Экспорт данных в CSV или JSON для внешнего анализа.
Также можно использовать возможности плагина WPGPT для генерации рекомендаций по оптимизации на основе собранных данных.
Заключение
Создание собственного отчета по производительности WordPress — это мощный инструмент для выявления и устранения проблем, влияющих на скорость и стабильность сайта. Используйте описанные методы и примеры, чтобы получить глубокий анализ и сделать ваш проект максимально быстрым и надежным.