Правило великого пальця: Cron слід регулярно запускати для обслуговування вашого веб-сайту.
Ви згадали у своєму коментарі до MPD, що, незважаючи на налаштування крона та запуск їх регулярно, ваша таблиця cache_form швидко зростає.
Одне з варіантів цього - частіше запускати свій крон. Скажіть кожні шість годин чи менше? Якщо ви не можете дозволити собі це, читайте далі.
Альтернативне рішення:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
Встановіть Elysia Cron і тепер ви можете запускати функцію cron свого модуля окремо. Ви можете зберігати частоту крона Elysia для себе, щоб він працював кожні шість годин. Так що ваш cache_form
стіл обрізають кожні шість годин.
Під час цього процесу обрізки записи, які не старші 6 годин, не будуть видалені. Причина полягає в тому, що якщо всі записи видалено, то будь-які форми, які подаються під час видалення записів, можуть вести себе дивно.
Подивіться на код 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;
Як зазначається в коментарі, вони вважають, що його повинно бути багато, і у вашому випадку це стає занадто багато для вас. Таким чином, фокус полягає в тому, щоб чистити таблицю cache_form частіше і зменшити значення $ закінчується до нижчого значення, якщо ви хочете очистити записи cache_form частіше, ніж значення за замовчуванням 6 шість годин, тоді вам потрібно змінити TTL записи cache_form.
Ви можете зробити це, встановивши cacheboject і потім реалізуючи, в hook_cacheobject_presave
межах якого ви можете змінити TTL, може становити 2 або 3 години.
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;
}
}
Недоліком цього підходу є те, якщо форми не надсилаються протягом 2 годин (значення RTL, яке ви встановили), дані форми можуть бути втрачені, і у вас можуть виникнути певні проблеми, що втратили чинність.