ক্যাশে থেকে এন্ট্রি মোছার জন্য আপনার ক্যাশে_স্কিয়ার_সর্বস্ব () ব্যবহার করা উচিত । কারণটি হ'ল ব্যবহৃত ক্যাশে বাস্তবায়ন সক্রিয় ডাটাবেসে ডাটাবেস টেবিলটি ব্যবহার করতে পারেনি। ড্রুপাল ডেটাবেস ক্যাশে ক্লাসের সাথে এটিই ঘটে তবে প্রতিটি শ্রেণীর ক্ষেত্রে এটি সত্য হওয়া উচিত নয়।
আপনি যদি _ ক্যাশে_জেট_বজেক্ট () ( ক্যাশে_জেট () এবং ক্যাশে_সেট () দ্বারা ডাকা ফাংশন ) দেখেন তবে লক্ষ্য করবেন যে এটিতে নীচের কোড রয়েছে।
static $cache_objects;
if (!isset($cache_objects[$bin])) {
$class = variable_get('cache_class_' . $bin);
if (!isset($class)) {
$class = variable_get('cache_default_class', 'DrupalDatabaseCache');
}
$cache_objects[$bin] = new $class($bin);
}
return $cache_objects[$bin];
প্রতিটি ক্যাশে বিন স্টোরের জন্য ক্যাশে বাস্তবায়নের শ্রেণি আলাদা হতে পারে এবং এমনকি ডিফল্টটিকেও পরিবর্তন করা যেতে পারে।
প্রাইভেট আপডেটের স্ট্যাটাস ক্যাশে সিস্টেম ঠিক কীভাবে _update_cache_clear () , _update_cache_get () এবং _update_cache_set () এ সাধারণ ক্যাশে ফাংশন ব্যবহার করে না তা ব্যাখ্যা করে । (জোর আমার।)
উপলভ্য আপডেটগুলি সম্পর্কে আনা তথ্য সংরক্ষণের জন্য আমরা বিশেষত মূল ক্যাশে এপিআই ব্যবহার করি না। এটি অত্যন্ত গুরুত্বপূর্ণ যে এই ক্যাশেটি কেবল তখনই সাফ হয়ে যায় যখন আমরা সফলভাবে নতুন উপলভ্য আপডেট ডেটা আনার পরে পপুলেশন করি। মূল ক্যাশে এপিআইয়ের ব্যবহারের ফলে সমস্ত ধরণের সম্ভাব্য সমস্যা দেখা দেয় যা ফলস্বরূপ উপলব্ধ আপডেট ডেটা সর্বদা প্রাপ্ত করার চেষ্টা করতে সক্ষম হয়, সহ যদি কোনও সাইটের "ন্যূনতম ক্যাশে আজীবন" থাকে (যা সর্বনিম্ন এবং সর্বোচ্চ উভয়ই) সংজ্ঞায়িত থাকে, অথবা যদি কোনও সাইট মেমকেচে বা অন্য প্লাগযোগ্য ক্যাশে সিস্টেম ব্যবহার করে যা অস্থির ক্যাশে ধরে নেয়।
আপডেট ম্যানেজার মডিউল এখনও {cache_update} টেবিল ব্যবহার করে, কিন্তু এর পরিবর্তে ব্যবহার cache_set()
, cache_get()
এবং cache_clear_all()
বেসরকারী সাহায্যকারী ফাংশন যে এই একই প্রাথমিক কাজ বাস্তবায়ন কিন্তু নিশ্চিত করুন যে ক্যাশে অকালে সাফ করা হবে না আছে, এবং তথ্য সবসময় মধ্যে সংরক্ষিত হয় যে ডাটাবেস, এমনকি মেমক্যাস বা অন্য কোনও ক্যাশে ব্যাকএন্ড ব্যবহার করা হলেও।
আপডেট ম্যানেজারের সুনির্দিষ্ট প্রয়োজন রয়েছে যা প্রয়োজনীয় তথ্য প্রয়োজন কারণ খুব ঘন ঘন আপডেট তথ্য আনার চেষ্টা করলে দ্রুপাল.আর সার্ভারগুলির সাথে সমস্যা দেখা দিতে পারে, এই বিষয়টি বিবেচনা করে যে আপডেট ম্যানেজারটি কোনও ড্রপাল চলমান কোনও সাইট থেকে আপডেট তথ্য আনতে পারে।
আপনার ক্ষেত্রে, আপনি [module_name]__[entity_type]__[entity_id]__[string_depending_on_where_the_cache_came_from]
একটি একক ক্যাশে বিন স্টোরের জন্য ক্যাশে আইডি হিসাবে ব্যবহার করতে পারেন । সত্তার জন্য আপনাকে সমস্ত এন্ট্রি মুছতে হবে, আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন।
cache_clear_all("{$module}__{$entity_type}__{$entity_id}__", $bin, TRUE);
আপনি $module
যখন ক্যাশে সাফ করার সময় নির্ধারিত মানটি যদি না পেয়ে থাকেন বা আপনি যে মডিউলটির জন্য ডেটা ক্যাশে করেছেন তা থেকে স্বাধীনভাবে ক্যাশে এন্ট্রি মুছতে চান, তবে আপনি আলাদা ক্যাশে আইডি ব্যবহার করতে পারেন, যেমন [entity_type]__[entity_id]__[string_depending_on_where_the_cache_came_from]
, বা [entity_type]__[entity_id]__[module_name]__[string_depending_on_where_the_cache_came_from]
। cache_clear_all()
স্ট্রিং আর্গুমেন্ট হিসাবে পাস, দিয়ে শুরু একটি ক্যাশে আইডি যখন এমন সমস্ত ক্যাশে এন্ট্রি মুছে ফেলা $wildcard
হয় TRUE
, এবং ক্যাশে ID নয় '*'
। এই ক্ষেত্রে, নিম্নলিখিত কোডটি দিয়ে ক্যাশে সাফ হবে।
cache_clear_all("{$entity_type}__{$entity_id}__", $bin, TRUE);
db_delete()
?