WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Рекомендуемые продукты со скидкой от Template Monster

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 Введена.

Код wp suspend cache addition: wp-includes/functions.php WP 5.2.4

<?php
function wp_suspend_cache_addition( $suspend = null ) {
	static $_suspend = false;

	if ( is_bool( $suspend ) ) {
		$_suspend = $suspend;
	}

	return $_suspend;
}

Cвязанные функции

Из метки: cache (кэш кеш)

3 коммента
  • campusboy3417 www.youtube.com/c/wpplus

    Функция часто выручает, когда надо импортировать много постов, к примеру товаров. Без неё на 10к постах при экспорте запросто можно получить переполнения памяти, так как WP кеширует каждый запрос. На самом деле кеш необходим, но не при таких операциях, потому данные функция необходима.

    2
    Ответить1.7 года назад #
  • Valerii

    Пример #1 содержит ошибку: wp_suspend_cache_addition() не включает кеширование, а возращает текущее состояние.
    Для включения пишем wp_suspend_cache_addition(false);

    1
    Ответить11 мес назад #
Здравствуйте, !     Войти . Зарегистрироваться