apcu_entry function သည် APCU extension မှပေးသော cache စစ်ဆင်ရေးနည်းလမ်းဖြစ်သည်။ ၎င်း၏ function သည် cache ထဲတွင်တန်ဖိုးကိုသိမ်းဆည်းရန်နှင့်တန်ဖိုးမတည်ရှိသည့်အခါဒေတာကိုရယူရန် callback function ကို execute လုပ်ရန်ဖြစ်သည်။ ဤ callback function သည်များသောအားဖြင့် API ဒေတာကိုရယူရန်သို့မဟုတ်ရှုပ်ထွေးသောတွက်ချက်မှုများကိုပြုလုပ်ရန်နေရာတစ်ခုဖြစ်သည်။
mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
$ key : cached key တန်ဖိုးကိုများသောအားဖြင့်သိမ်းဆည်းထားသောအချက်အလက်များကိုခွဲခြားသတ်မှတ်ရန်အသုံးပြုသည်။
$ callback : callback function ကို။ cache တွင်သော့မရှိတော့ပါကအချက်အလက်ရယူရန် callback function ကိုကွပ်မျက်လိမ့်မည်။
$ ttl : စက္ကန့်ပိုင်းအတွင်း cache ၏တရားဝင်မှုကာလ။ Cached Data ကိုသက်တမ်းကုန်ဆုံးပြီးနောက်ဖျက်ပစ်လိမ့်မည်။
apcu_entry အသုံးပြုခြင်း၏အဓိကရည်ရွယ်ချက်မှာဒေတာဘေ့စ်သို့မဟုတ်ဝေးလံခေါင်သီ API တောင်းဆိုမှုများကိုလျှော့ချရန်နှင့်စနစ်၏တုန့်ပြန်မှုနှုန်းကိုတိုးတက်စေရန်ဖြစ်သည်။ ဒေတာသိမ်းဆည်းထားသည့်အခါနောက်တစ်ခေါက်တွင်တူညီသောတောင်းဆိုမှုသည်ဝေးလံခေါင်သီသော 0 န်ဆောင်မှုကိုပြန်လည်ရယူခြင်းမပြုဘဲ cache ကိုတိုက်ရိုက်ဖတ်ပါ။ ၎င်းသည်ဆာဗာဝန်ကိုသိသိသာသာလျော့နည်းစေရုံသာမကအသုံးပြုသူအတွေ့အကြုံကိုထိရောက်စွာတိုးတက်စေသည်။
ဥပမာ, API interface ကိုခေါ်ဆိုသည့်အခါ API ၏ပြန်လာသောအချက်အလက်များသည်အတော်အတန်တည်ငြိမ်ပြီးမကြာခဏပြောင်းလဲခြင်းမရှိပါ။ ဤအချက်အလက်များကိုသိမ်းဆည်းခြင်းအားဖြင့်အသုံးပြုသူတောင်းဆိုချက်ကိုတောင်းခံသည့်အခါတိုင်း API တောင်းခံခြင်းကိုရှောင်ရှားနိုင်သည်။
ဤတွင် apcu_entry ကို အသုံးပြု. ပြန်လာသောအချက်အလက်များကိုမည်သို့သိမ်းဆည်းရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။
ပထမ ဦး စွာသင်၏ PHP ပတ် 0 န်းကျင်သည် APCU extension ကိုတပ်ဆင်ပြီးဖွင့်ထားပါ။ အကယ်. သင်မထည့်သွင်းပါက၎င်းကိုအောက်ပါ command မှတဆင့် install လုပ်နိုင်သည်။
sudo apt-get install php-apcu
တပ်ဆင်ပြီးနောက် PHP 0 န်ဆောင်မှုကိုပြန်လည်စတင်ပါ။
sudo service php-fpm restart
ကျွန်ုပ်တို့တွင် API interface တစ်ခုရှိသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည် Returned data ကို apcu_entry မှတဆင့် cache လုပ်နိုင်ပါတယ်။
<?php
// မေးမြန်း API အသုံးပြုသူအချက်အလက်များကိုရယူပါ
function fetch_user_data($user_id) {
// သွား URL ဒေတာကိုရယူပါ,ဒီမှာဒေတာဖြစ်ပါတယ် JSON ပမာဏ
$url = "https://gitbox.net/api/user/{$user_id}";
$response = file_get_contents($url);
return json_decode($response, true);
}
// အသုံးပြု apcu_entry သိုကာတာ API ဒေတာကိုပြန်သွားပါ
function get_user_data($user_id) {
// သိုကာတာ的键值
$cache_key = "user_data_{$user_id}";
// 尝试从သိုကာတာ中ဒေတာကိုရယူပါ
return apcu_entry($cache_key, function() use ($user_id) {
// 如果သိုကာတာ中没有数据,ထို့နောက်မှ API ဒေတာကိုရယူပါ
return fetch_user_data($user_id);
}, 3600); // သိုကာတာ 1 နာရီ
}
// နမူနာခေါ်ဆိုမှု
$user_data = get_user_data(123);
print_r($user_data);
?>
အထက်ဖော်ပြပါကုဒ်များတွင်ကျွန်ုပ်တို့သည် Remote API မှအသုံးပြုသူအချက်အလက်များကိုရယူရန် FETC_USER_DATA function ကိုသတ်မှတ်သည်။ ထို့နောက်ဒေတာများကို apcu_entry function မှတဆင့်သိမ်းဆည်းထားသဖြင့် cache_data _ {$ user_id {{user_id} ဖြစ်ပြီးသိမ်းဆည်းထားသောတရားဝင်မှုကာလသည် 1 နာရီဖြစ်သည်။ အကယ်. ဒေတာသည် cache ထဲတွင်မရှိပါက apcu_entry သည် callback function ကို Execute လုပ်ပြီး API မှဒေတာများကိုရယူပါ။
cache တွင်သက်ဆိုင်ရာအချက်အလက်များရှိပြီးသား APCu_entry သည် callback function ကိုထပ်မံအကောင်အထည်ဖော်ခြင်းမရှိဘဲ Cached data ကိုတိုက်ရိုက်ပြန်ပို့လိမ့်မည်။ cache သက်တမ်းကုန်ဆုံးသွားသောအခါနောက်ဆုံးတောင်းဆိုမှုကိုနောက်ဆုံးပေါ်ဒေတာကိုရယူရန်နှင့် re-cache ကိုရယူရန်ပြန်လည်ခေါ်ဆိုမှုကိုပြန်လည်လုပ်ဆောင်လိမ့်မည်။
cache ကိုမူဝါဒ - သင့်လျော်သော cache သက်တမ်းကုန်ဆုံးသည့်ရက်ကိုရွေးချယ်ပါ။ အမှန်တကယ် applications များအနေဖြင့်ကွဲပြားခြားနားသောဒေတာများသည်မတူကွဲပြားသော update ကြိမ်နှုန်းအမျိုးမျိုးရှိနိုင်သည်။
Cache Cleanup : ဒေတာအပြောင်းအလဲများရှိပါက cache ကိုသန့်ရှင်းရေးလုပ်ရန်သတိရပါ။ cache ကိုဖျက်ရန် apcu_delete ကို သင်အသုံးပြုနိုင်သည်။
apcu_delete($cache_key);
Memory Management : Apcu Cache Data ကိုဆာဗာ၏မှတ်ဉာဏ်တွင်သိမ်းဆည်းထားပါသည်, ထို့ကြောင့် cache ကိုအသုံးပြုသောအခါမှတ်ဥာဏ်အသုံးပြုမှုကိုထည့်သွင်းစဉ်းစားရန်လိုအပ်သည်။ အကယ်. သိုလှောင်ထားသည့်ဒေတာပမာဏသည်ကြီးမားလွန်းပါက၎င်းသည်စနစ်စွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်စေမည့်မှတ်ဥာဏ်မလုံလောက်သေးပါ။