wp_cache_get_last_changed() WP 4.7.0

Отримує позначку часу останньої зміни вказаної групи об’єктного кешу.

Отримана позначка часу показує, коли востаннє було змінено вказану групу об’єктного кешу.

Функція може стати в нагоді, коли наприклад у групу кеша foo збираються дані і при будь-якій зміні даних цієї групи потрібно, щоб кеш будь-якого елемента групи вважався простроченим. Для цього можна брати значення цієї функції (час зміни даних) та додавати його до ключа кешу. Так, при будь-якій зміні часу, ключ кешу змінюватиметься і означає даних під вказаний ключ в кеші вже не буде.

Все це очевидно потрібно, тому що в WP немає можливості видалити дані певної групи кешу (тобто не можна видалити кеш всієї групи, можна видалити кеш тільки за конкретним ключем або весь кеш).

Ця функція працює з об’єктним кешем, тобто. бере дані зміни з туди. Це означає, щоб вона працювала правильно, після додавання даних до групи також потрібно оновити мітку часу зміни даних.

Наприклад, якщо ми працюємо з групою кешу posts, то після додавання даних до кешу цієї групи потрібно оновити мітку зміни даних так:

wp_cache_set( 'last_changed', microtime(), 'posts' );
// microtime() = 0.77065000 1560530885

Тільки після такого поновлення ця функція поверне актуальну мітку часу:

echo wp_cache_get_last_changed( 'posts' ); // 0.77065000 1560530885

Хуків немає.

Повертає

Строку. Тимчасову мітку UNIX (з мікросекундами).

Використання

wp_cache_get_last_changed($group);
$group
(рядок) (обов’язковий)
Назва групи об’єктного кешу.

Група вказується у третьому параметрі функції
wp_cache_set() .

Приклади

0

#1 Приклад використання мітки часу під час створення кешу

Урізаний шматок коду з ядра, який використовується функції get_pages() для кешування результатів її роботи.

function some_cache_orientated_function(){

	$key = md5( serialize( 'Якісь дані, не важливо' ) );

	$last_changed = wp_cache_get_last_changed( 'posts' );

	$cache_key = "get_pages:$key:$last_changed";

	// отримуємо кеш
	$ cache = wp_cache_get ($ cache_key, 'posts');

	// Кеш є, повернемо його
	if ( false !== $cache ) {
		return $pages;
	}

	$pages = $wpdb->get_results( 'SQL запит на отримання постів');

	// збережемо лише ID
	$page_structure = array();
	foreach ( $pages as $page ) {
		$page_structure[] = $page->ID;
	}

	// кешу немає, отримаємо дані та збережемо їх у кеш
	wp_cache_set($cache_key, $page_structure, 'posts');

	return $pages;
}

список змін

З версії 4.7.0Введено.

Код wp_cache_get_last_changed() WP 6.0.2

function wp_cache_get_last_changed( $group ) {
	$last_changed = wp_cache_get( 'last_changed', $group);

	if ( ! $last_changed ) {
		$last_changed = microtime();
		wp_cache_set( 'last_changed', $last_changed, $group);
	}

	return $last_changed;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *