Я обратил внимание, что у меня в блоге стала ужасно долго открываться админка и значит пришло время разобраться как эти ваши PHP вообще трассировать и нормально отлаживать.
Чтобы провести трассировку WordPress и выявить причины задержек, используйте комбинацию инструментов и методов. Разберём пошагово.
Включение отладки
Активируйте режим отладки WordPress, чтобы видеть ошибки и предупреждения.
- Откройте файл
wp-config.phpв корне сайта. - Добавьте или измените следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // Логи ошибок будут сохраняться в wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // Не показывать ошибки на экране (важно для продакшена)
Анализ времени загрузки и запросов к БД
Включите логирование времени выполнения и запросов к базе данных.
- В том же файле
wp-config.phpдобавьте:
define('SAVEQUERIES', true); // Сохраняет все SQL‑запросы
- Создайте файл
footer.phpв папке вашей темы (или отредактируйте существующий) и добавьте перед</body>следующий код:
<?php
if (current_user_can('administrator')) { // Показываем только админам
global $wpdb;
echo "<pre>Всего запросов: " . $wpdb->num_queries . "</pre>";
echo "<pre>Время генерации страницы: " . timer_stop(0) . " сек.</pre>";
// Вывод всех запросов (может быть очень много)
if (defined('SAVEQUERIES') && SAVEQUERIES) {
foreach ($wpdb->queries as $query) {
echo "<pre>" . esc_html($query[0]) . " - " . $query[1] . " сек.</pre>";
}
}
}
?>
Использование плагинов для профилирования
Установите специализированные плагины — они упрощают анализ.
Популярные варианты:
- Query Monitor — самый популярный инструмент. Показывает:
- все SQL‑запросы и их время выполнения;
- хуки и действия;
- PHP‑ошибки;
- использование памяти;
- HTTP‑запросы.
- Debug Bar — добавляет панель отладки в админ‑бар. Показывает базовую информацию о запросах, хуках, кэше.
- P3 (Plugin Performance Profiler) — помогает определить, какие плагины замедляют сайт.
Анализ производительности на уровне сервера
Используйте инструменты для анализа производительности PHP и сервера.
- Xdebug — мощный профайлер PHP. Генерирует файлы трассировки, которые можно открыть в инструментах типа KCacheGrind или Webgrind.
- Установите Xdebug на сервере.
- Настройте его в
php.iniдля генерации профайлинговых файлов. - Откройте сгенерированный файл в Webgrind — увидите, какие функции PHP выполняются дольше всего.
- Blackfire.io — коммерческий, но очень мощный инструмент для профилирования PHP‑приложений. Даёт наглядные графики и детализацию.
Инструменты браузера
Используйте встроенные инструменты разработчика в браузере (F12):
- Вкладка Network — показывает время загрузки каждого ресурса (HTML, CSS, JS, изображения). Ищите файлы, которые загружаются очень долго.
- Вкладка Performance — позволяет записать сеанс загрузки страницы и увидеть, какие функции JavaScript и процессы рендеринга занимают больше всего времени.
Внешние сервисы мониторинга
Воспользуйтесь онлайн‑сервисами для комплексного анализа:
- GTmetrix — даёт подробный отчёт о времени загрузки, количестве запросов, размере страницы и рекомендации по оптимизации.
- Google PageSpeed Insights — оценивает производительность на мобильных и десктопных устройствах, даёт рекомендации.
- Pingdom Tools — показывает waterfall‑диаграмму загрузки страницы.
Проверка хостинга и базы данных
- Мониторинг ресурсов сервера (CPU, RAM, I/O) — убедитесь, что хостинг не перегружен.
- Оптимизация базы данных — используйте плагин WP Sweep или phpMyAdmin для оптимизации таблиц.
- Проверка медленных запросов MySQL — включите slow query log в настройках MySQL и проанализируйте логи.
Краткий план действий
- Включите
WP_DEBUGиSAVEQUERIESдля базового лога. - Установите Query Monitor — это даст быстрый старт в анализе запросов к БД и времени их выполнения.
- Проверьте сайт в GTmetrix или PageSpeed Insights для получения общих рекомендаций.
- Используйте вкладки Network и Performance в инструментах разработчика браузера.
- Если проблема не ясна, используйте Xdebug или Blackfire для глубокого профилирования PHP‑кода.
- Проверьте ресурсы сервера и оптимизируйте базу данных.
Такой комплексный подход позволит точно определить «узкое место» — будь то тяжёлый плагин, неоптимальный SQL‑запрос, медленный HTTP‑запрос к внешнему API или проблема на стороне хостинга.




