Как избежать проблем с PHP memory_limit в WordPress

Одной из частых ошибок, с которыми сталкиваются владельцы и разработчики сайтов на WordPress, является превышение лимита памяти PHP (memory_limit). Это проявляется в виде белого экрана смерти, ошибок при обновлении плагинов, тем или в процессе работы сайта. В этой статье разберём, как правильно диагностировать, увеличить и оптимизировать использование памяти в WordPress, чтобы избежать подобных проблем.

Что такое PHP memory_limit и почему он важен

Параметр memory_limit в PHP определяет максимальный объём оперативной памяти, который может использовать один скрипт PHP. Если скрипт пытается выделить больше памяти, чем это ограничение, сервер выдаст ошибку, и выполнение остановится.

Для WordPress этот лимит особенно важен, поскольку плагинов и тем часто много, и они могут требовать значительных ресурсов для работы. Правильная настройка лимита памяти позволяет избежать сбоев и повысить стабильность сайта.

По умолчанию, в разных хостинг-окружениях этот параметр может быть 64M, 128M или даже меньше. Для современных WordPress-сайтов рекомендуют минимум 128M, а лучше 256M и выше, особенно если сайт большой или использует тяжёлые плагины.

Как проверить текущий memory_limit в WordPress

Для проверки текущего значения memory_limit можно использовать встроенную функцию PHP. Создайте в корне сайта файл phpinfo.php со следующим содержимым:

<?php
phpinfo();
?>

Или в файле functions.php активной темы выведите значение:

function wpspeed_show_memory_limit() {
    echo '<p>Текущий memory_limit: ' . ini_get('memory_limit') . '</p>';
}
add_action('wp_footer', 'wpspeed_show_memory_limit');

После этого откройте сайт и внизу страницы увидите значение лимита памяти.

Как увеличить memory_limit для WordPress

Если вы столкнулись с ошибками из-за недостатка памяти, можно попробовать увеличить лимит несколькими способами.

1. Изменение в файле wp-config.php

Добавьте в wp-config.php перед строкой /* That's all, stop editing! Happy publishing. */ следующий код:

define('WP_MEMORY_LIMIT', '256M');
<

Это увеличит лимит памяти для выполнения PHP скриптов WordPress до 256 Мб.

2. Изменение в php.ini

Если у вас есть доступ к файлу php.ini на сервере, найдите строку с memory_limit и измените её:

memory_limit = 256M

После изменения перезапустите веб-сервер, чтобы настройки вступили в силу.

3. Изменение в .htaccess

В некоторых случаях можно задать лимит памяти через файл .htaccess, добавив строку:

php_value memory_limit 256M

Однако этот способ работает не на всех серверах и может вызвать ошибку 500, если PHP работает в режиме CGI.

Оптимизация использования памяти в WordPress

Увеличение лимита — это не всегда лучшее решение. Иногда проблемы с памятью связаны с неэффективным кодом, тяжёлыми плагинами или неправильной архитектурой сайта. Рассмотрим несколько способов оптимизации.

1. Отключение ненужных плагинов

Чем больше плагинов, тем выше расход памяти. Проверьте, какие плагины действительно нужны, и удалите или отключите лишние. Для анализа можно использовать плагин Clearfy Pro, который помогает оптимизировать и отключать ненужные элементы.

2. Использование легковесных альтернатив

Если плагин слишком тяжёлый, попробуйте найти более оптимизированный аналог. Например, для кеширования можно использовать WPspeed Async JS, который не нагружает память и ускоряет загрузку.

3. Оптимизация кода тем и плагинов

Если вы разрабатываете собственные решения, избегайте избыточных циклов и больших массивов данных в оперативной памяти. Например, не загружайте все записи из базы сразу, а используйте пагинацию и выборку по частям.

function wpspeed_get_posts_chunked($offset = 0, $limit = 100) {
    return get_posts(array(
        'posts_per_page' => $limit,
        'offset' => $offset,
        'post_status' => 'publish'
    ));
}

Такой подход поможет избежать превышения лимита памяти при обработке большого количества данных.

Диагностика утечек памяти в WordPress

Если проблема с памятью не решается простым увеличением лимита, возможно, есть утечки или слишком высокое потребление ресурсов.

Использование плагина Query Monitor

Плагин Query Monitor поможет вам увидеть, какие запросы и функции потребляют много памяти и времени. Это позволит локализовать проблемные места.

Логирование ошибок памяти

В wp-config.php можно включить логирование ошибок:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

После этого все ошибки, включая ошибки памяти, будут записываться в файл wp-content/debug.log. Анализ этого файла поможет выявить причины.

Пример функции увеличения лимита памяти с контролем

Ниже пример функции для темы или плагина, которая автоматически проверяет текущий лимит и увеличивает его при необходимости:

function wpspeed_increase_memory_limit($min_limit = '256M') {
    $current_limit = ini_get('memory_limit');
    $to_bytes = function($val) {
        $val = trim($val);
        $last = strtolower($val[strlen($val)-1]);
        $val = (int)$val;
        switch($last) {
            case 'g': return $val * 1024 * 1024 * 1024;
            case 'm': return $val * 1024 * 1024;
            case 'k': return $val * 1024;
            default: return $val;
        }
    };
    if ($to_bytes($current_limit) < $to_bytes($min_limit)) {
        ini_set('memory_limit', $min_limit);
    }
}
wpspeed_increase_memory_limit();

Эту функцию можно подключить в functions.php вашей темы или в собственном плагине, чтобы гарантировать достаточный лимит.

Как успешно оптимизировать базы данных WordPress для ускорения сайта
04.11.2025
Как уменьшить размер изображений в WordPress для ускорения сайта
31.10.2025
Как создать lazy load в WordPress своими руками для ускорения сайта
19.11.2025
Как отложить загрузку требующих ресурсов в WordPress для ускорения сайта
12.01.2026
Как удалить неиспользуемые темы WordPress быстро и безопасно
30.03.2026