আমি কি সমস্ত ক্যাশে __. টেবিলগুলি কেটে ফেলতে পারি?
আপনার "ক্যাশে_ফর্ম" টেবিলটি কেটে ফেলা উচিত নয়, কারণ এতে ড্রুপাল থেকে তাদের বৈধতা দেওয়ার জন্য ব্যবহৃত ডেটা রয়েছে; আপনি যদি এই টেবিলটি মুছুন, ব্যবহারকারী থেকে বর্তমানে জমা দেওয়া ফর্মটি বাতিল হয়ে যাবে এবং ব্যবহারকারীদের আবার ফর্মটি জমা দিতে হবে।
কিছু অন্যান্য ক্যাশে টেবিল থাকতে পারে যা মডিউলটিকে অদ্ভুতভাবে আচরণ করার কারণ ঘটায়। এই কারণেই মডিউলগুলি অতিরিক্ত ক্যাশে টেবিলগুলি ব্যবহার করছে (যার নাম সাধারণত "ক্যাশে_" দিয়ে শুরু হয়) হ'ল_ফ্লুশ_ক্যাচি () কে দ্রুপাল থেকে সাফ করা যায় এমন ক্যাশে টেবিলগুলি ফিরিয়ে আনার জন্য প্রয়োগ করা হবে, এবং যা নিম্নলিখিত কোড দিয়ে ডাকা হয়, থেকে drupal_flush_all_caches () ।
$core = array('cache', 'cache_path', 'cache_filter', 'cache_bootstrap', 'cache_page');
$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
foreach ($cache_tables as $table) {
cache_clear_all('*', $table, TRUE);
}
drupal_flush_all_caches()
system_clear_cache_submit () থেকে ডেকে আনা ফাংশনটি , আপনি যখন পারফরম্যান্স সেটিংস পৃষ্ঠায় "সমস্ত ক্যাশে সাফ করুন" বোতামটি ক্লিক করেন তখন জমা দেওয়া ফর্ম হ্যান্ডলার বলা হয়।
ক্রোন কার্যের সময়, সিস্টেম_ক্রোন () নিম্নলিখিত কোড ব্যবহার করে ক্যাশে সাফ করে।
$core = array('cache', 'cache_path', 'cache_filter', 'cache_page', 'cache_form', 'cache_menu');
$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
foreach ($cache_tables as $table) {
cache_clear_all(NULL, $table);
}
প্রথম আর্গুমেন্ট হিসাবে cache_clear_all () হল NULL
, এ মৃত্যুদন্ড কার্যকর কোড DrupalDatabaseCache :: স্পষ্ট () (Drupal এর 7) নিম্নলিখিত এক।
if (variable_get('cache_lifetime', 0)) {
// We store the time in the current user's $user->cache variable which
// will be saved into the sessions bin by _drupal_session_write(). We then
// simulate that the cache was flushed for this user by not returning
// cached data that was cached before the timestamp.
$user->cache = REQUEST_TIME;
$cache_flush = variable_get('cache_flush_' . $this->bin, 0);
if ($cache_flush == 0) {
// This is the first request to clear the cache, start a timer.
variable_set('cache_flush_' . $this->bin, REQUEST_TIME);
}
elseif (REQUEST_TIME > ($cache_flush + variable_get('cache_lifetime', 0))) {
// Clear the cache for everyone, cache_lifetime seconds have
// passed since the first request to clear the cache.
db_delete($this->bin)
->condition('expire', CACHE_PERMANENT, '<>')
->condition('expire', REQUEST_TIME, '<')
->execute();
variable_set('cache_flush_' . $this->bin, 0);
}
}
কোডটি কেবল সারিগুলি সরিয়ে দেয়, যা স্থায়ী হিসাবে চিহ্নিত নয় এবং মেয়াদোত্তীর্ণ হয়ে গেছে, ফিরে আসা টেবিল থেকে hook_flush_caches()
এবং "ক্যাশে_ফর্ম" সহ দ্রুপাল থেকে ব্যবহৃত বিভিন্ন ক্যাশে টেবিল থেকে। "ক্যাশে_ফর্ম" তে খুব বেশি সারি থাকা উচিত নয়; যদি এটি হয়, আপনি ক্রোন কার্যগুলির পরপর দুটি মৃত্যুদণ্ড কার্যকর করার মধ্যবর্তী সময়কে হ্রাস করতে পারেন বা কাস্টম মডিউল থেকে নিম্নলিখিত কোডটি কার্যকর করতে পারেন।
cache_clear_all(NULL, 'cache_form');
একটি বিকল্প হ'ল দেভুল মডিউলটি এবং মেনু লিঙ্কটি এটির ব্যবহার করে ম্যানুয়ালি ক্যাশে মুছে ফেলা হবে।