Ini mungkin tidak cocok untuk semua orang, dan mungkin tidak cukup cepat untuk OP - karena hanya dipicu pada inisialisasi halaman berikutnya. Namun, itu membantu saya dengan memicu kode tepat setelah "cache membersihkan semua" yang tidak peka waktu.
Jelas HOOK
perlu diganti dengan nama modul Anda sendiri.
/**
* 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.
}
Jika Anda memiliki bin tertentu yang perlu Anda targetkan, yang di atas dapat dimodifikasi untuk mendukung itu, selama seluruh bin dikosongkan pada titik cache Anda kosong.
hook_init
hanya dijalankan untuk halaman yang tidak di-cache. Meskipun karena cache penuh jelas berarti tidak ada halaman dalam cache, ini seharusnya tidak menyebabkan masalah. Namun, sistem caching eksternal seperti Varnish akan menghalangi pemicu ini, dan akan berarti itu hanya akan terjadi ketika permintaan yang tepat berikutnya mencapai kembali ke Drupal.
Perlu juga dicatat bahwa tergantung pada sistem caching Anda - kapan tepatnya cache_set
tersedia untuk semua pengguna bersamaan - bahwa pengait ini dapat dipicu beberapa kali secara bersamaan, terutama jika Anda memiliki banyak pengguna.