apcu_entry သည် APCU extension မှပေးသော function တစ်ခုဖြစ်ပြီးတန်ဖိုးကို cache ထဲသို့သိမ်းဆည်းရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ apcu_store နှင့်မတူဘဲ apcu_entry သည် cache တွင်သော့ရှိပြီးရှိပြီးသားကို ဦး စွာစစ်ဆေးလိမ့်မည်။ တည်ရှိပါက၎င်းသည် cache ထဲတွင်တန်ဖိုးကိုပြန်လည်ရရှိစေသည်။ အကယ်. ၎င်းမရှိပါက၎င်းသည်ပေးထားသော callback function ကိုလုပ်ဆောင်ပြီး callback function ၏ပြန်လည်တန်ဖိုးကိုသိမ်းဆည်းထားသည်။ သင် loaks data data ကိုပျင်းရိဖို့လိုတဲ့အခါဒီအင်္ဂါရပ်ကအရမ်းကိုအသုံးဝင်ပါတယ်။
$value = apcu_entry('my_key', function () {
return someExpensiveFunction();
});
အထက်ဖော်ပြပါကုဒ်များတွင် My_Key သည် cache ထဲတွင်ရှိပြီးသားဖြစ်ပါက apcu_entry သည် cache ကိုတိုက်ရိုက်ပြန်ပို့ပါက,
apcu_entry သည် Cache Cache ၏အဆင်ပြေစေရန်အဆင်ပြေစေရန်အတွက်မလျော်ကန်စွာအသုံးပြုခြင်းသည်အထူးသဖြင့်မှတ်ဥာဏ်လျှံနေစေနိုင်သည်။ ဤတွင်တူညီသောအကြောင်းပြချက်အနည်းငယ်ရှိပါတယ်:
အကယ်. callback function သည်အချက်အလက်အမြောက်အများကိုပြန်လည်ရောက်ရှိပါကသိမ်းဆည်းထားသောအကြောင်းအရာသည်အလွန်ကြီးမားလာလိမ့်မည်။ ၎င်းသည်မှတ်ဥာဏ်လျှံယိုယွင်းပျက်စီးစေနိုင်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်သင်သည် cache အရွယ်အစားကိုကန့်သတ်ထားနိုင်သည်သို့မဟုတ် callback function သည်အလွန်ကြီးမားသောဒေတာတည်ဆောက်ပုံများမဖြစ်ပေါ်စေရန်သေချာစေရန်အချက်အလက်များကိုအကောင်းဆုံးကန့်သတ်နိုင်သည်။
ဥပမာအားဖြင့်, သင်၏ callback function ကိုဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များသို့မဟုတ်ကြီးမားသောအရာဝတ်ထုအမြောက်အများကိုပြန်ပို့သည်ဆိုပါစို့။
$value = apcu_entry('large_data', function () {
return fetchLargeDataFromDatabase(); // ဤအချက်အလက်သည်အလွန်ကြီးမားနိုင်သည်
});
ဖြေရှင်းနည်းမှာများစွာသောအချက်အလက်များကို cache ထဲသို့တိုက်ရိုက်သိုလှောင်ခြင်းသို့မဟုတ်ဒေတာသိုလှောင်ထားသည့်အချက်အလက်ပမာဏအချိန်တိုင်းတွင်အချက်အလက်များကိုသေချာစေရန်အချက်အလက်များကိုခွဲထုတ်ရန်ဖြစ်သည်။
Apcu သည်သက်တမ်းကုန်ဆုံးသည့်အချက်အလက်များကိုသက်တမ်းကုန်ဆုံးစေရန်ခွင့်ပြုသည်။ သို့သော်သင်သည်သက်တမ်းကုန်ဆုံးချိန်ကိုမသတ်မှတ်ပါကသို့မဟုတ်သိုလှောင်ထားသည့်အချက်အလက်များကိုမသတ်မှတ်ထားပါကမှတ်ဉာဏ်အသုံးပြုမှုကိုဆက်လက်တိုးပွားစေနိုင်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်သင်သည် cache အတွက်သက်တမ်းကုန်ဆုံးချိန်ကိုအမြဲတမ်းသတ်မှတ်ထားသင့်ပြီးသင်မလိုအပ်သောအချက်အလက်များကိုပုံမှန်သန့်ရှင်းရေးပြုလုပ်သင့်သည်။
apcu_entry('my_key', function () {
return fetchData();
}, 3600); // တည်ဆောက်သည်1နာရီကုန်ဆုံးသည်
အကယ်. သိုလှောင်ထားသည့်ဒေတာများကိုမလိုအပ်တော့ပါက၎င်းတို့ကို apcu_delete ဖြင့်ပုံမှန်သန့်ရှင်းရေးလုပ်ရန်သေချာစေပါ။
apcu_delete('my_key');
တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ် 0 န်းကျင်တွင်တောင်းဆိုမှုများသည်တစ်ချိန်တည်းတွင်တူညီသော callback function ကိုခေါ်ဆိုနိုင်ပြီးဒေတာများကိုတစ်ချိန်တည်းတွင်သိမ်းဆည်းရန်ကြိုးစားနိုင်သည်။ ဤကိစ္စတွင် Cache Management သည်မသင့်လျော်ပါက၎င်းသည်မှတ်ဥာဏ်ကိုအကြိမ်ကြိမ်သိုလှောင်ထားရန်အချက်အလက်အမြောက်အမြားကိုဖြစ်ပေါ်စေနိုင်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်သင်တောင်းဆိုချက်တစ်ခုသာလျှင်ဖုန်းနံပါတ်ကိုသာလွှဲပြောင်းပေးပြီးဖိုင်သော့ခတ်ခြင်းသို့မဟုတ်မှတ်ဥာဏ်သော့ခတ်ခြင်းကဲ့သို့သောသော့ခတ်ကိရိယာတစ်ခုအသုံးပြုခြင်းအားဖြင့်အချက်အလက်များကိုတစ်ချိန်တည်းတွင်သိမ်းဆည်းထားနိုင်သည်။
$value = apcu_entry('my_key', function () {
// တစ်ပြိုင်နက်တည်းကွပ်မျက်ခြင်းကိုရှောင်ရှားရန်သော့ခလောက်များကိုအသုံးပြုပါ
if (apcu_exists('my_key_lock')) {
return null; // အဆိုပါ cache ကို updated ခံရလျှင်,အချည်းနှီးသောတန်ဖိုးကိုပြန်လာပါ
}
apcu_store('my_key_lock', true); // တည်ဆောက်သည်锁
$data = fetchData();
apcu_store('my_key', $data);
apcu_delete('my_key_lock'); // သော့ခတ်ပယ်ဖျက်ပါ
return $data;
});
ရှုပ်ထွေးသောအရာဝတ်ထုများသို့မဟုတ်အရင်းအမြစ်များကိုသိုလှောင်သောအခါ၎င်းတို့ကို serialized နိုင်အောင်သေချာအောင်လုပ်ပါ။ သင် cache ထဲသို့ခေါ်ဆောင်သွားနိုင်သောအရာဝတ်ထုတစ်ခုကိုသိမ်းဆည်းရန်ကြိုးစားပါက PHP သည်အက်ပလီကေးရှင်းကို crash သို့မဟုတ် memory ပြ problems နာများကိုဖြစ်ပေါ်စေသည်။ ဤသို့ရှောင်ရှားရန် serialize နှင့် unserialize ကို ရှုပ်ထွေးသောအချက်အလက်များကိုသိမ်းဆည်းရန်အမြဲတမ်းအသုံးပြုသင့်သည်။
$value = apcu_entry('complex_object', function () {
return serialize(new MyComplexObject());
});
သင် cache ကိုရယူသောအခါအရာဝတ်ထုကိုပြန်လည်ထူထောင်ရန်အတွက် unserialize ကို သုံးပါ။
$object = unserialize(apcu_fetch('complex_object'));
apcu_entry ကို အသုံးပြုသောအခါမှတ်ဥာဏ်လျှံကိုထိရောက်စွာရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါအစီအမံများကိုပြုလုပ်နိုင်သည်။
သိုလှောင်ထားသည့်အချက်အလက်များ၏အရွယ်အစားကိုကန့်သတ်ထားပါ ။ Paging, chunked storage စသည်တို့ကို ဖြတ်. အချိန်တိုင်းသိမ်းဆည်းထားသောဒေတာပမာဏကိုသင်ထိန်းချုပ်နိုင်သည်။
သက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်ပါ ။ cache item တစ်ခုချင်းစီအတွက် cache item တစ်ခုစီအတွက်လုံလောက်သောသက်တမ်းကုန်ဆုံးချိန်ကိုသတ်မှတ်ပါ။
သန့်ရှင်းရေး cache ကိုပုံမှန် - မှတ်ဉာဏ်ကိုစားသုံးခြင်းမှကာကွယ်ရန်မလိုအပ်တော့မည့်သိုလှောင်ထားသောဒေတာများကိုဖျက်ရန် apcu_delete ကို သုံးပါ။
ရှုပ်ထွေးသောအရာ ဝတ်ထုများကိုမသိမ်းဆည်းပါနှင့်။
Memory Locks ကို အသုံးပြု . - မြင့်မားသောတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းက callback ယန္တရားကို အသုံးပြု. တစ်ပြိုင်နက်တည်းက callback လုပ်ဆောင်ချက်များကိုအကာအကွယ်ပေးသည်။