अंगूठा नियम: क्रोन को नियमित रूप से आपकी वेबसाइट के हाउसकीपिंग के लिए चलाया जाना चाहिए।
आपने एमपीडी को अपनी टिप्पणी में उल्लेख किया है कि क्रोन की स्थापना और उन्हें नियमित रूप से चलाने के बावजूद आपका कैश_फॉर्म टेबल जल्दी से बढ़ रहा है।
इसका एक समाधान यह है कि आप अपने क्रोन को अधिक बार चलाएं। हर छह घंटे या उससे कम कहें? यदि आप इसे आगे पढ़ने का जोखिम नहीं उठा सकते हैं।
वैकल्पिक समाधान:
mymodule_cron() {
cache_clear_all(NULL, 'cache_form');
}
एलिसिया क्रोन स्थापित करें और अब आप अपने मॉड्यूल के क्रोन फ़ंक्शन को अलग से चला सकते हैं। आप हर छह घंटे चलाने के लिए आप मॉड्यूल के लिए एलिसिया क्रोन की आवृत्ति रख सकते हैं। ताकि 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;
जैसा कि टिप्पणी पढ़ती है कि वे मान रहे हैं कि यह बहुत होना चाहिए और आपके मामले में यह आपके लिए बहुत अधिक हो रहा है। इसलिए ट्रिक या तो कैश_फॉर्म टेबल को अधिक बार क्लियर करना है और $ एक्सपायर की वैल्यू को कम मूल्य पर कम करना है, यदि आप कैशे_फॉर्म एंट्रीज को 6 बार के डिफ़ॉल्ट मूल्य से अधिक बार क्लियर करना चाहते हैं तो आपको टीटीएल को बदलने की आवश्यकता है cache_form प्रविष्टियाँ।
आप ऐसा कर सकते हैं कि कैशेबोजेक्ट स्थापित करके और फिर उसे लागू करके hook_cacheobject_presave
आप टीटीएल को 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 घंटे के भीतर जमा नहीं किए जाते हैं (आपके द्वारा निर्धारित आरटीएल मान) फॉर्म का डेटा खो सकता है और आपको कुछ फॉर्म की समय सीमा समाप्त हो सकती है।