Aturan Jempol: Cron harus dijalankan secara teratur untuk pemeliharaan situs web Anda.
Anda menyebutkan dalam komentar Anda untuk MPD bahwa meskipun mengatur cron dan menjalankannya secara teratur tabel cache_form Anda tumbuh dengan cepat.
Salah satu solusi untuk itu adalah menjalankan cron Anda lebih sering. Katakan setiap enam jam atau kurang? Jika Anda tidak mampu melakukannya bacalah lebih lanjut.
Solusi Alternatif:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
Instal Elysia Cron dan sekarang Anda dapat menjalankan fungsi cron modul Anda secara terpisah. Anda dapat menjaga frekuensi cron Elysia agar modul Anda berjalan setiap enam jam. Sehingga cache_form
meja Anda dipangkas setiap enam jam.
Selama proses pemangkasan ini, entri yang tidak lebih dari 6 jam tidak akan dihapus. Alasannya, jika semua entri dihapus maka segala bentuk yang diajukan pada saat menghapus entri dapat berperilaku aneh.
Lihatlah kode di 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;
Ketika komentar itu berbunyi, mereka menganggap itu harus banyak dan dalam kasus Anda itu menjadi terlalu banyak untuk Anda. Jadi triknya adalah menghapus tabel cache_form lebih sering dan mengurangi nilai $ expire ke nilai yang lebih rendah, jika Anda ingin menghapus entri cache_form lebih sering daripada nilai default 6 enam jam maka Anda perlu mengubah TTL dari entri cache_form.
Anda dapat melakukannya dengan menginstal cacheboject dan kemudian mengimplementasikan hook_cacheobject_presave
di dalamnya Anda dapat mengubah TTL menjadi 2 atau 3 jam.
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;
}
}
Satu kelemahan dari pendekatan ini adalah jika formulir tidak dikirimkan dalam waktu 2 jam (nilai RTL yang Anda tetapkan) data formulir dapat hilang dan Anda mungkin mendapatkan beberapa formulir yang kedaluwarsa.