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.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; }