Reguła kciuka: Cron powinien być regularnie uruchamiany w celu zarządzania witryną.
W swoim komentarzu do MPD wspomniałeś, że pomimo konfigurowania crona i regularnego uruchamiania go, twoja tabela cache_form szybko rośnie.
Jednym z takich rozwiązań jest częstsze uruchamianie crona. Mówisz co sześć godzin lub mniej? Jeśli nie możesz sobie na to pozwolić, czytaj dalej.
Alternatywne rozwiązanie:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
Zainstaluj Elysia Cron, a teraz możesz uruchomić funkcję cron swojego modułu osobno. Możesz zachować częstotliwość cronu Elysia, aby moduł działał co sześć godzin. Aby twój cache_form
stół był przycinany co sześć godzin.
Podczas tego procesu przycinania wpisy, które nie są starsze niż 6 godzin, nie zostaną usunięte. Powodem jest to, że jeśli wszystkie wpisy zostaną usunięte, wszelkie formularze przesyłane w momencie usuwania wpisów mogą zachowywać się dziwnie.
Spójrz na kod w https://api.drupal.org/api/drupal/include!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;
Jak czytamy w komentarzu, zakładają, że powinno to być obfite, aw twoim przypadku staje się dla ciebie zbyt obfite. Zatem sztuczka polega na częstszym czyszczeniu tabeli cache_form i zmniejszeniu wartości $ expire do niższej wartości, jeśli chcesz wyczyścić wpisy cache_form częściej niż domyślna wartość 6 sześć godzin, musisz zmienić TTL wpisy cache_form.
Możesz to zrobić, instalując cacheboject, a następnie wdrażając, hook_cacheobject_presave
w którym możesz zmienić TTL na 2 lub 3 godziny.
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;
}
}
Wadą tego podejścia jest to, że jeśli formularze nie zostaną przesłane w ciągu 2 godzin (ustawiona wartość RTL), dane formularza mogą zostać utracone i mogą wystąpić problemy z wygasaniem formularza.