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.4.3

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

	if ( $last_changed ) {
		return $last_changed;
	}

	return wp_cache_set_last_changed( $group );
}