Функция wp_cache_get_last_changed()
используется для получения метки времени последнего изменения данных в указанной группе объектного кэша. Эта метка времени отображает, когда последний раз обновлялась группа кэша и может быть полезной для контроля «свежести» данных в кэше.
Эта функция применяется в тех случаях, когда кэшируемые данные группы должны обновляться при каждом изменении данных. Например, если данные в группе posts
изменились, мы можем использовать полученное значение времени как часть ключа кэша. Таким образом, изменение данных автоматически приведет к изменению ключа кэша, и система получит актуальные данные.
wp_cache_get_last_changed( string $group ): string
Параметры
$group
(string, required) — Имя группы объектного кэша, для которой требуется узнать время последнего изменения.
Возвращаемое значение
Функция возвращает строку с UNIX-меткой времени (включая микросекунды), которая указывает момент последнего обновления данных в указанной группе кэша.
Пример 1: Использование метки времени при кэшировании данных группы
Функция wp_cache_get_last_changed()
может помочь в создании «динамического» ключа для кэшируемых данных. Это полезно, если данные группы кэша часто изменяются.
function cache_custom_data() {
global $wpdb;
// Формируем уникальный ключ на основе данных и времени последнего изменения группы
$key_part = md5( serialize( 'custom_data_query' ) );
$last_changed = wp_cache_get_last_changed( 'custom_data' );
$cache_key = "custom_data:$key_part:$last_changed";
// Пытаемся получить данные из кэша
$cached_data = wp_cache_get( $cache_key, 'custom_data' );
if ( false !== $cached_data ) {
return $cached_data;
}
// Если данных нет в кэше, выполняем запрос к базе данных
$data = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}custom_table WHERE condition = 1" );
// Сохраняем результат в кэше
wp_cache_set( $cache_key, $data, 'custom_data' );
return $data;
}
В этом примере функция создает кэш с ключом, содержащим время последнего изменения группы custom_data
. При каждом изменении данных этой группы обновление метки времени приведет к созданию нового ключа кэша, что обеспечит получение актуальной информации.
Пример 2: Обновление метки времени после изменения данных
После внесения изменений в данные группы важно обновить метку времени с помощью функции wp_cache_set()
.
function update_custom_data() {
global $wpdb;
// Обновляем данные в базе данных
$wpdb->update(
$wpdb->prefix . 'custom_table',
array( 'column' => 'new_value' ),
array( 'id' => 1 )
);
// Обновляем метку времени в кэше для группы 'custom_data'
wp_cache_set( 'last_changed', microtime(), 'custom_data' );
}
Этот код выполняет обновление данных в базе данных и одновременно обновляет метку времени группы custom_data
, чтобы любые функции, обращающиеся к кэшу, могли получить актуальные данные.
Пример 3: Использование метки времени для очистки устаревшего кэша
Допустим, у нас есть функция, которая регулярно проверяет актуальность кэша и при необходимости очищает его.
function get_recent_posts() {
$key = md5( serialize( 'recent_posts_query' ) );
$last_changed = wp_cache_get_last_changed( 'posts' );
$cache_key = "recent_posts:$key:$last_changed";
// Получаем данные из кэша
$recent_posts = wp_cache_get( $cache_key, 'posts' );
if ( false !== $recent_posts ) {
return $recent_posts;
}
// Если кэша нет, выполняем запрос
$recent_posts = get_posts( array(
'numberposts' => 5,
'post_status' => 'publish'
) );
// Сохраняем результат в кэш
wp_cache_set( $cache_key, $recent_posts, 'posts' );
return $recent_posts;
}
В этом примере мы создаем динамический ключ для кэша, чтобы обновлять кэшированные данные при каждом изменении группы posts
.
Заключение
Функция wp_cache_get_last_changed()
позволяет эффективно контролировать актуальность данных в кэше, используя метку времени как часть ключа для обновления кэша при изменении данных.