PHP-оптимизация для WordPress
PHP-оптимизация для WordPress
Заголовок раздела «PHP-оптимизация для WordPress»WordPress написан на PHP, поэтому версия и конфигурация PHP напрямую влияют на производительность и безопасность сайта.
Версия PHP
Заголовок раздела «Версия PHP»Актуальные рекомендации:
- PHP 7.4 — минимальная официально поддерживаемая версия для WordPress
- PHP 8.0–8.1 — «совместимы с исключениями»
- PHP 8.2+ — полная поддержка в новых версиях WordPress
Новые версии PHP приносят не только функции, но и производительность, и безопасность. Версии ниже 7.4 достигли End of Life и подвергают сайт уязвимостям.
⚠️ При обновлении PHP тестируйте совместимость плагинов и темы на staging-окружении. Старые плагины могут не работать с PHP 8+.
Проверка совместимости
Заголовок раздела «Проверка совместимости»# WP-CLI команда для проверки совместимости плагинов и темыwp phpcompat <version>Таблица совместимости: PHP Compatibility and WordPress Versions.
Конфигурация PHP — php.ini
Заголовок раздела «Конфигурация PHP — php.ini»PHP настраивается через php.ini. На некоторых хостингах доступна настройка через .htaccess или .user.ini.
Таймауты
Заголовок раздела «Таймауты»Три ключевых параметра, которые должны быть согласованы между собой и с таймаутом веб-сервера (Apache/Nginx):
; Максимальное время выполнения скрипта (не включает системные вызовы и MySQL-запросы)max_execution_time = 300
; Максимальное время на приём данных от веб-сервера (например, загрузка файлов)max_input_time = 60Важно: если таймаут веб-сервера меньше max_execution_time, запрос будет убит сервером независимо от настройки PHP. Таймауты должны увеличиваться пропорционально нагрузке — но в разумных пределах, чтобы не вызывать каскадный эффект.
Лимиты памяти
Заголовок раздела «Лимиты памяти»; Глобальный лимит PHP на один процессmemory_limit = 256MWordPress имеет два собственных лимита в wp-config.php:
// Лимит для фронтенда (по умолчанию 40M, для Multisite — 64M)define('WP_MEMORY_LIMIT', '128M');
// Лимит для админки (по умолчанию 256M)define('WP_MAX_MEMORY_LIMIT', '256M');Правило: WP_MEMORY_LIMIT <= WP_MAX_MEMORY_LIMIT. Админка требует больше памяти (медиа-загрузки, тяжёлые страницы настроек).
WordPress попытается поднять memory_limit до этих значений, но не опустит его, если в php.ini значение выше.
Размеры загрузок
Заголовок раздела «Размеры загрузок»; Максимальный размер одного загружаемого файлаupload_max_filesize = 64M
; Максимальный размер всего POST-запросаpost_max_size = 64MПравило: post_max_size >= upload_max_filesize. Иначе PHP не обработает запросы, превышающие post_max_size.
Замена WP-Cron
Заголовок раздела «Замена WP-Cron»wp-cron.php запускается при каждом визите и проверяет, не пора ли выполнить отложенные задачи. Проверки лёгкие, но создают дополнительную нагрузку при каждом запросе.
Отключение встроенного крона
Заголовок раздела «Отключение встроенного крона»define('DISABLE_WP_CRON', true);Альтернатива: системный cron
Заголовок раздела «Альтернатива: системный cron»# Добавить в crontab (каждые 15 минут)*/15 * * * * wget -q -O - https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1Или через WP-CLI:
*/15 * * * * wp cron event run --due-now --path=/var/www/htmlСвязь с другими разделами
Заголовок раздела «Связь с другими разделами»- Кэширование WordPress — плагины и серверный кэш
- Оптимизация WordPress — общий обзор факторов производительности