Regla del pulgar: Cron debe ejecutarse regularmente para el mantenimiento de su sitio web.
Usted mencionó en su comentario a MPD que, a pesar de configurar el cron y ejecutarlos regularmente, su tabla cache_form está creciendo rápidamente.
Una solución para eso es ejecutar su cron con más frecuencia. ¿Digamos cada seis horas o menos? Si no puede permitirse el lujo de hacerlo, lea más.
Solución alternativa
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
Instale Elysia Cron y ahora puede ejecutar la función cron de su módulo por separado. Puede mantener la frecuencia del cron de Elysia para que su módulo se ejecute cada seis horas. Para que su cache_form
mesa se pode cada seis horas.
Durante este proceso de poda, las entradas que no tengan más de 6 horas no se eliminarán. La razón es que si se eliminan todas las entradas, cualquier formulario que se envíe al momento de eliminar las entradas puede comportarse de manera extraña.
Mire el código en https://api.drupal.org/api/drupal/includes!form.inc/function/form_set_cache/7
function form_set_cache($form_build_id, $form, $form_state) {
// 6 hours cache life time for forms should be plenty.
$expire = 21600;
A medida que se lee el comentario, están asumiendo que debería ser suficiente y, en su caso, se está volviendo demasiado para usted. Entonces, el truco es borrar la tabla cache_form con más frecuencia y reducir el valor de $ expire a un valor inferior, si desea borrar las entradas cache_form con más frecuencia que el valor predeterminado de 6 seis horas, entonces necesita alterar el TTL de Las entradas cache_form.
Puede hacerlo instalando cacheboject y luego implementando hook_cacheobject_presave
dentro de lo cual puede alterar el TTL que puede ser de 2 o 3 horas.
mymodule_cacheobject_presave()($object, $cid, $bin) {
// Extend the expiry period for prototype forms used in ajax enabled forms.
$cache_ttl = 1 ; // Change it to any number of hours
if ($bin == 'cache_form') {
$object->expire = REQUEST_TIME + $cache_ttl * 3600;
}
}
Una desventaja de este enfoque es que si los formularios no se envían dentro de las 2 horas (el valor RTL que estableció), los datos del formulario se pueden perder y es posible que algunos problemas expiren.