WordPress как на ладони
rgbcode is looking for WordPress developers.

wp_suspend_cache_addition()WP 3.3.0

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

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

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

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

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

Смотрите также полезную функцию для импорта больших данных:

Хуков нет.

Возвращает

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

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

wp_suspend_cache_addition( $suspend );
$suspend(true/false)
  • trueостановит добавление объектов в кэш.
  • falseвключит кэширование.

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

Примеры

0

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

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

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

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

#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 6.4.3

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

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

	return $_suspend;
}
1 комментарий
    Войти