Bu herkes için uygun olmayabilir ve OP için yeterince hızlı olmayabilir - çünkü sadece bir sonraki sayfa başlangıcında tetiklenir. Ancak, zaman duyarlı olmayan bir "önbellek tümünü temizle" hemen sonra kodu tetiklememe yardımcı oldu.
Açıkçası HOOK
kendi modül adınızla değiştirilmesi gerekiyor.
/**
* Implements hook_init().
*/
function HOOK_init(){
// if there is no cache_not_empty defined, define it
// and then trigger our cache cleared code
if ( !cache_get('HOOK_cache_not_empty') ) {
cache_set('HOOK_cache_not_empty', TRUE);
foreach (module_implements('cache_cleared') as $module) {
module_invoke($module, 'cache_cleared');
}
}
}
/**
* Implements hook_cache_cleared().
*/
function HOOK_cache_cleared(){
// do what you need here, in which ever module.
}
Hedeflemeniz gereken belirli bir bölmeniz varsa, tüm bölme önbelleğinizin temizlendiği noktada boşaldığı sürece yukarıdakiler bunu destekleyecek şekilde değiştirilebilir.
hook_init
yalnızca önbelleğe alınmamış sayfalar için yürütülür. Tam bir önbellek temizliği önbelleğe alınmış sayfa olmaması anlamına gelmesine rağmen, bu bir soruna neden olmamalıdır. Bununla birlikte, Vernik gibi harici önbellek sistemleri bu tetiklemenin önüne geçecek ve sadece bir sonraki uygun istek Drupal'a geri döndüğünde gerçekleşeceği anlamına gelecektir.
Ayrıca, önbellek sisteminize bağlı olarak - tam olarak cache_set
eşzamanlı kullanıcılar için tam olarak kullanılabilir olduğunda - bu çağanozun, özellikle çok sayıda kullanıcınız varsa, aynı anda birden çok kez tetiklenebileceğine dikkat edilmelidir.