wp_suspend_cache_addition() WP 3.3.0
Временно приостанавливает добавление объектов в объектный кэш.
Функция позволяет остановить работу объектного кэширования, которое используется в WordPress повсеместно. Но при этом уже имеющиеся данные в кэше не удаляются и их можно получить как обычно.
Может быть полезна при импорте больших массивов данных, чтобы не забивать память при обработке одноразового скрипта.
Остановка кэша работает только для текущего запроса (на время текущей генерации страницы).
Не забывайте вызвать функцию без параметров wp_suspend_cache_addition()
еще раз, чтобы обратно включить объектное кэширования после его отключения. Без объектного кэша производительность WordPress сильно снижается.
Хуков нет.
Возвращает
True/false. Текущий статус остановки кэширования.
Использование
wp_suspend_cache_addition( $suspend );
- $suspend(логический)
- true - остановит добавление объектов в кэш. false - включит кэширование.
По умолчанию: null
Примеры
#1 Демонстрация отключения и включения объектного кэширования
wp_suspend_cache_addition( true ); // отключаем кэширование // делаем что нибудь wp_suspend_cache_addition( false ); // включаем кэширование
#2 Временная остановка объектного кэширования
Допустим, мы импортируем большой массив данных в WordPress. К примеру, нам нужно заполнить таблицу записей из другой базы данных и для этого у нас есть код, в котором мы используем функцию добавления записей wp_insert_post(). Функция после добавления записи в БД, добавляет данные в кэш, чтобы потом получить их без дополнительного запроса. Но нам не нужно кэширование при импорте, потому что по умолчанию кэш записывается в оперативную память и в результате импорта её может не хватить.
Поэтому, чтобы импорт работал как нужно, давайте выключим кэш до импорта и включим его после:
// запомним текущее состояние (это пример, что так тоже можно делать) $was_suspended = wp_suspend_cache_addition(); // отключаем кэширование wp_suspend_cache_addition( true ); // тут код импорта. Объектное кэширование здесь уже не работает // вернем прежнее состояние кэша обратно wp_suspend_cache_addition( $was_suspended );
Заметки
- Static. true/false.
$_suspend
Список изменений
С версии 3.3.0 | Введена. |
Функция часто выручает, когда надо импортировать много постов, к примеру товаров. Без неё на 10к постах при экспорте запросто можно получить переполнения памяти, так как WP кеширует каждый запрос. На самом деле кеш необходим, но не при таких операциях, потому данные функция необходима.
Пример #1 содержит ошибку: wp_suspend_cache_addition() не включает кеширование, а возращает текущее состояние.
Для включения пишем wp_suspend_cache_addition(false);
Поправил, спасибо!