Regra do polegar: O Cron deve ser executado regularmente para a manutenção do seu site.
Você mencionou em seu comentário ao MPD que, apesar de configurar o cron e executá-lo regularmente, sua tabela cache_form está crescendo rapidamente.
Uma solução para isso é executar o cron com mais frequência. Diga a cada seis horas ou menos? Se você não puder fazer isso, leia mais.
Solução alternativa:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
Instale o Elysia Cron e agora você pode executar a função cron do seu módulo separadamente. Você pode manter a frequência do Elysia cron para que seu módulo seja executado a cada seis horas. Para que sua cache_form
mesa seja podada a cada seis horas.
Durante esse processo de remoção, as entradas que não tenham mais de 6 horas serão excluídas. O motivo é que, se todas as entradas forem excluídas, quaisquer formulários enviados no momento da exclusão das entradas poderão se comportar de maneira estranha.
Veja o código em 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;
Enquanto o comentário diz, eles assumem que deve ser suficiente e, no seu caso, está se tornando demais para você. Portanto, o truque é limpar a tabela cache_form com mais frequência e reduzir o valor de $ expirar para um valor mais baixo, se você desejar limpar as entradas cache_form com mais frequência do que o valor padrão de 6 seis horas, será necessário alterar o TTL de as entradas cache_form.
Você pode fazer isso instalando o cacheboject e implementando o período hook_cacheobject_presave
em que você pode alterar o TTL para 2 ou 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;
}
}
Uma desvantagem dessa abordagem é que, se os formulários não forem enviados dentro de duas horas (o valor da RTL definido), os dados do formulário poderão ser perdidos e você poderá obter alguns problemas de validade do formulário.