wp_suspend_cache_addition

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

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

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

Остановка кэша длиться только на текущую генерацию страницы.

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

Хуков нет.

Возвращает

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

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

wp_suspend_cache_addition( $suspend );
$suspend(логический)
true – остановит добавление объектов в кэш. false – включит кэширование.
По умолчанию: false

Примеры

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

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

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

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

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

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

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

// запомним текущее состояние
$was_suspended = wp_suspend_cache_addition();

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

// тут код импорта ...
// тут объектное кэширование не будет работать совсем...

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

Код из


wp-includes/functions.php

WP 4.7.2

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

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

	return $_suspend;
}