လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> php code တွင် apcu_entry cache ကိုကြွေးရှင်းရှင်းလင်းလင်းသန့်ရှင်းရေးလုပ်နည်း

php code တွင် apcu_entry cache ကိုကြွေးရှင်းရှင်းလင်းလင်းသန့်ရှင်းရေးလုပ်နည်း

gitbox 2025-05-26

တစ်ပြိုင်နက်တည်း php php applications များတွင် cache ၏ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နှင့်ဒေတာဘေ့စ်ဖိအားကိုလျှော့ချရန်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ apcu (အခြားရွေးချယ်စရာ PHP cache user) သည်အစာရှောင်ခြင်းဒေတာများ၌အစာရှောင်ခြင်းအချက်အလက်များအတွက်သင့်လျော်သောပေါ့ပါးသော local cache seturning ဖြစ်သည်။ apcu_entry function သည် APCU တွင်အလွန်လက်တွေ့ကျပြီးအဆင့်မြင့် interface တစ်ခုဖြစ်သည်။ ၎င်းသည် "မတည်ရှိပါက cache ကိုဖတ်ရန်, ရေးခြင်းနှင့်ပြန်လာခြင်း" ကိုကြွေးကြော်စွာအကောင်အထည်ဖော်နိုင်မည်ဖြစ်သည်။ ဤဆောင်းပါးသည် apcu_entry ကို Cache များကိုစီမံခန့်ခွဲရန်, လျှောက်လွှာစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နှင့်လက်တွေ့ကျသောဥပမာအားဖြင့်ပူးတွဲပါလက်တွေ့ကျတဲ့ဥပမာကိုပူးတွဲတင်ပြရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးပါလိမ့်မည်။

1 ။ apcu_entry ဆိုတာဘာလဲ။

apcu_entry သည် PHP 5.5 နှင့်အထက်တွင် APCU တိုးချဲ့ခြင်းဖြင့်ပေးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 mixed apcu_entry(string $key, callable $generator [, int $ttl = 0 ])

parameter သည်ဖော်ပြချက်:

  • $ key : cached key name ။

  • $ Generator - ဒီသော့ထဲမှာ cache ထဲမှာမတည်ရှိပါက callback function ကိုကွပ်မျက်ခံရချိန်တွင်၎င်း၏ပြန်လည်တန်ဖိုးကို cache ထဲတွင်သိမ်းဆည်းထားပြီးပြန်လာလိမ့်မည်။

  • $ TTL : CACHED ရှင်သန်ရပ်တည်ရေးအချိန် (စက္ကန့်), ပုံမှန်သည်အမြဲတမ်းဆိုလိုသည်။

ဤပုံစံကို cache stampede ကာကွယ်မှု ဟုခေါ်သည်, ဖြစ်စဉ်များကိုတစ်ပြိုင်နက်တည်း cache ပျက်ကွက်ခြင်းနှင့်အခြေခံဒေတာအရင်းအမြစ်များကိုတောင်းဆိုခြင်းမှကာကွယ်ခြင်းမှကာကွယ်ခြင်းကိုကာကွယ်ပေးသည်။

2 ။ Scenario ခွဲခြမ်းစိတ်ဖြာမှုကိုသုံးပါ

ပုံမှန်ဇာတ်လမ်းတစ်ပုဒ်ကိုမြင်ယောင်ကြည့်ပါ။ သင်၏ 0 က်ဘ်ဆိုက်ပင်မစာမျက်နှာသည်အရောင်းအ 0 ယ်များစာရင်းကိုပြသရန်လိုအပ်ပြီးဒေတာ၏ဤအပိုင်းကိုဒေတာဘေ့စ်မှမေးမြန်းခြင်းဖြစ်သည်။ တောင်းဆိုမှုတစ်ခုစီအတွက်စာကြည့်တိုက်ကိုတိုက်ရိုက်စစ်ဆေးပါက၎င်းသည်မလိုအပ်သောစွမ်းဆောင်ရည်ဆုံးရှုံးမှုများကိုဖြစ်ပေါ်စေလိမ့်မည်။ ဤအချက်အလက်များကိုကြည့်ရှုရန် apcu_entry ကို သုံးနိုင်သည်။

 $hotProducts = apcu_entry('hot_products', function() {
    // ဒေတာဘေ့စ်မှရေရောင်းကုန်ပစ္စည်းများစာရင်းကိုတုပပါ
    return getHotProductsFromDatabase();
}, 300); // သိုကာတာ 5 မိနစ်

ဤနည်းအားဖြင့် cache တည်ရှိသောအခါ cache data များကိုတိုက်ရိုက်ပြန်ပို့သည်။ မဟုတ်ရင်ဒေတာဘေ့စ်ကနေဒေတာတွေကိုဖတ်ပြီး cache ကိုရေးဖို့ callback ကွပ်မျက်ခံရတယ်။

3 ။ ကြော့ရှင်းစွာစင်ကြယ်သော cache

အမှန်တကယ်စီးပွားရေးတွင်သိုလှောင်ထားသောအကြောင်းအရာသည်ငြိမ်သက်ခြင်းမဟုတ်ပါ။ ဥပမာအားဖြင့်ထုတ်ကုန်အသစ်များကိုရေပူရောင်းသည့်စာရင်းသို့မဟုတ်ထုတ်ကုန်အခြေအနေပြောင်းလဲမှုများကိုထည့်သွင်းသောအခါသက်ဆိုင်ရာ cache ကိုသန့်ရှင်းရေးပြုလုပ်ရန်လိုအပ်သည်။

APCU_DELETETE () ကို တက်ကြွစွာခေါ်ဆိုခြင်းဖြင့်သတ်မှတ်ထားသော cache ကိုဖျက်နိုင်သည်။

 apcu_delete('hot_products');

နောက်တစ်ကြိမ်တွင်သင်ဝင်ရောက်ကြည့်ရှုသောအခါ apcu_entry သည် cache ကို update လုပ်ရန် Generator function ကိုခေါ်လိမ့်မည်။ ဤနည်းလမ်းသည်ရိုးရာ apcu_fetch + apcu_store ထက်ပိုမိုရှင်းလင်း။ အနုမြူအက်တမ်ဖြစ်သည်။

4 ။ လျှောက်လွှာအလေ့အကျင့်: အသုံးပြုသူသတင်းအချက်အလက် caching ဥပမာ

အောက်ဖော်ပြပါသည် URL များကိုပေါင်းစပ်ထားသောလျှောက်လွှာဥပမာတစ်ခုဖြစ်သည်။ ကျွန်ုပ်တို့သည်အသုံးပြုသူ၏အချက်အလက်များကိုဝေးလံခေါင်သီသော interface မှ ( https://gitbox.net/api/upi/user/123 ) နှင့် cache ကို cache ကိုကြည့်ရှုနိုင်သည်။

 function getUserInfo($userId) {
    $cacheKey = "user_info_$userId";
    return apcu_entry($cacheKey, function() use ($userId) {
        // ဝေးလံခေါင်သီသော interface တစ်ခုမှဒေတာများကိုရယူရန် Simulate
        $url = "https://gitbox.net/api/user/$userId";
        $json = file_get_contents($url);
        return json_decode($json, true);
    }, 600); // သိုကာတာ 10 မိနစ်
}

$user = getUserInfo(123);

Interface အချက်အလက်အပြောင်းအလဲများရှိပါကသင်ခေါ်ဆိုနိုင်သည်။

 apcu_delete("user_info_123");

တိကျသောအသုံးပြုသူများ၏သတင်းအချက်အလက် cache ကိုရှင်းလင်းရန်။

5 ။ စွမ်းဆောင်ရည်တိုးတက်မှုနှိုင်းယှဉ်

ရိုးရာ cache ရယူခြင်းနှင့်နှိုင်းယှဉ်ခြင်းနှင့်ယုတ္တိဗေဒရေးခြင်းနှင့်နှိုင်းယှဉ်ပါ။

 if (!apcu_exists($key)) {
    $value = expensiveOperation();
    apcu_store($key, $value);
} else {
    $value = apcu_fetch($key);
}

apcu_entry ကို အသုံးပြုခြင်းသည်ကုဒ်ရှုပ်ထွေးမှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ ၎င်းသည်အထူးသဖြင့်မြင့်မားသောအသွားအလာပတ်ဝန်းကျင်တွင်အထူးအရေးကြီးသည်။

6 ။ အကျဉ်းချုပ်

apcu_entry သည် APCU တွင်အလွန်အစွမ်းထက်။ အသုံးပြုရလွယ်ကူသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်ဒေတာထုတ်လုပ်မှု, cache ရေးသားခြင်းနှင့် cache ဖတ်ခြင်း, APCU_DELETETET နှင့်ပေါင်းစပ်ပြီး cache များကို caches များကိုစီမံခန့်ခွဲနိုင်ပြီး PHP applications များကိုပိုမိုထိရောက်စွာတည်ငြိမ်စေနိုင်သည်။ apcu_entry ကို စနစ်တကျအသုံးပြုခြင်းအားဖြင့်သင်သည်ပိုမိုမြန်ဆန်သောတုန့်ပြန်မှုနှင့်အောက် 0 င်သည့်ဝဘ်စနစ်ကိုအလွယ်တကူတည်ဆောက်နိုင်သည်။