กฎ Thumb: Cron ควรทำงานเป็นประจำเพื่อทำความสะอาดเว็บไซต์ของคุณ
คุณพูดถึงความคิดเห็นของคุณต่อ MPD ว่าแม้จะมีการตั้งค่า cron และเรียกใช้พวกเขาเป็นประจำตาราง cache_form ของคุณเติบโตอย่างรวดเร็ว
ทางออกหนึ่งที่ใช้ cron ของคุณบ่อยขึ้น พูดทุกหกชั่วโมงหรือน้อยกว่า หากคุณไม่สามารถที่จะทำอ่านเพิ่มเติม
ทางเลือกอื่น:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
ติดตั้งElysia Cronและตอนนี้คุณสามารถเรียกใช้ฟังก์ชัน cron ของโมดูลของคุณแยกกัน คุณสามารถรักษาความถี่ของ Elysia cron เพื่อให้โมดูลของคุณทำงานได้ทุก ๆ หกชั่วโมง เพื่อให้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 บ่อยขึ้นและลดค่าของ $ expire ให้เป็นค่าที่ต่ำกว่าหากคุณต้องการล้างรายการ cache_form บ่อยกว่าค่าเริ่มต้น 6 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 ที่คุณกำหนด) ข้อมูลในแบบฟอร์มอาจสูญหายได้และคุณอาจได้รับปัญหาบางอย่างที่หมดอายุ