WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

wp_suspend_cache_addition() WP 3.3.0

Временно приостанавливает добавление объектов в объектный кэш.

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

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

Остановка кэша работает только для текущего запроса (на время текущей генерации страницы).

Не забывайте вызвать функцию без параметров wp_suspend_cache_addition() еще раз, чтобы обратно включить объектное кэширования после его отключения. Без объектного кэша производительность WordPress сильно снижается.

Хуков нет.

Возвращает

True/false. Текущий статус остановки кэширования.

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

wp_suspend_cache_addition( $suspend );
$suspend(true/false)

trueостановит добавление объектов в кэш.
falseвключит кэширование.

По умолчанию: null

Примеры

#1 Демонстрация отключения и включения объектного кэширования

wp_suspend_cache_addition( true ); // отключаем кэширование

// делаем что нибудь

wp_suspend_cache_addition( false ); // включаем кэширование

#2 Временная остановка объектного кэширования

Рассмотрим случай, когда остановка объектного кэширование решает проблему переполнения памяти, а такое при импорте данных в WP встречается очень часто.

Допустим, мы импортируем большой массив данных в WordPress. К примеру, нам нужно заполнить таблицу записей из другой базы данных, или CSV файла, или по API. Для этого у нас есть код, в котором мы используем функцию добавления записей wp_insert_post() или wp_update_post(). Эти функции после добавления записи в БД, добавляет данные в кэш, чтобы потом получить их без дополнительного запроса. Но нам не нужно кэширование при импорте, потому что по умолчанию кэш записывается в оперативную память и в результате импорта её может не хватить.

Поэтому, чтобы импорт работал как нужно, нужно выключить кэш до импорта и включим его после:

// запомним текущее состояние (это пример, что так тоже можно делать)
$was_suspended = wp_suspend_cache_addition();

// отключаем кэширование
wp_suspend_cache_addition( true );

// ТУТ ВАШ КОД ИМПОРТА. Объектное кэширование здесь уже не работает

// вернем прежнее состояние кэша обратно
wp_suspend_cache_addition( $was_suspended );

Ссылки по теме:

Список изменений

С версии 3.3.0 Введена.

Код wp_suspend_cache_addition() WP 5.5.1

wp-includes/functions.php
<?php
function wp_suspend_cache_addition( $suspend = null ) {
	static $_suspend = false;

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

	return $_suspend;
}

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

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

1 коммент