Es posible que esto no sea adecuado para todos y que no sea lo suficientemente rápido para el OP, ya que solo se activa en la inicialización de la página siguiente. Sin embargo, me ayudó a activar el código justo después de un "borrar todo el caché" que no era sensible al tiempo.
Obviamente, HOOK
debe reemplazarse con el nombre de su propio módulo.
/**
* 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.
}
Si tiene un contenedor específico al que debe apuntar, lo anterior podría modificarse para admitirlo, siempre que el contenedor completo se vacíe en el punto de su caché libre.
hook_init
solo se ejecuta para páginas no almacenadas en caché. Aunque debido a que un borrado de caché completo debería significar que no hay páginas en caché, esto no debería causar un problema. Sin embargo, los sistemas de almacenamiento en caché externos como Varnish se interpondrán en el camino de esta activación y significarán que solo ocurrirá cuando la próxima solicitud adecuada llegue a Drupal.
También debe tenerse en cuenta que, dependiendo de su sistema de almacenamiento en caché, exactamente cuando cache_set
esté disponible para todos los usuarios concurrentes, este enganche podría activarse varias veces al mismo tiempo, especialmente si tiene un gran número de usuarios.