wp_cache_get_last_changed()
Получает метку времени последнего изменения указанной группы объектного кэша.
Полученная метка времени показывает, когда в последний раз была изменена указанная группа объектного кэша.
Функция может пригодится, когда например в группу кэша 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().
Примеры
#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 cache get last changed WP 6.7.1
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 ); }