Daily Php Development တွင် Parse_url သည် URL ကြိုးများကိုချုပ်ကိုင်ထားပြီးသူတို့၏အစိတ်အပိုင်းများကိုပြန်လည်ပေးအပ်သောအလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဒီ function ဟာမြန်ဆန်ပေမယ့် URL အမြောက်အမြားထုတ်လုပ်တဲ့ URL တွေအများကြီးကိုအသုံးချတဲ့အခါမှာ URL ကိုမကြာခဏထပ်ခါတလဲလဲထပ်ခါတလဲလဲထပ်ခါတလဲလဲထပ်ခါတလဲလဲထပ်ခါတလဲလဲပြောရရင် URL ကိုထပ်ခါတလဲလဲပြောရရင်။
ဤပုံတူတွက်ချက်မှုကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည် Parse_Url ၏ရလဒ်များကို cache ယန္တရားမှတဆင့်သိမ်းဆည်းနိုင်သည်။ PHP application များ၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် Parse_URL ၏ရလဒ်များကိုရိုးရှင်းလွယ်ကူစွာထိရောက်သောနည်းလမ်းဖြင့်မည်သို့သိမ်းဆည်းရမည်ကိုဤဆောင်းပါးတွင်ဖော်ပြပါမည်။
Parse_Url သည် built-in php function တစ်ခုဖြစ်ပြီးအကွပ်မျက်ခြင်းစွမ်းရည်မြင့်မားသော်လည်း၎င်းသည် stringsing ခွဲခြမ်းစိတ်ဖြာခြင်း, အကယ်. စနစ်သည်တူညီသောနေရာများတွင်တူညီသော URL ကိုထပ်ခါတလဲလဲပြုလုပ်ပါက Parse_URL အချိန်တိုင်းတွင်အမှန်တကယ်အလဟသို့ခေါ်ဆိုသည်။ သိမ်းဆည်းထားသောခွဲခြမ်းစိတ်ဖြာမှုရလဒ်များဖြင့်သင်လုပ်နိုင်သည် -
ထပ်ခါတလဲလဲ parsing ရှောင်ကြဉ်;
CPU overhead ကိုလျှော့ချပါ။
အထူးသဖြင့်သိသိသာသာဆိုင်ကလုန်းသို့မဟုတ်မြင့်မားသောတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်အထူးစွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ပါ။
အောက်ဖော်ပြပါ Parse_Url ၏ရလဒ်များကိုမှတ်ဉာဏ်အဆင့် cache ကိုပြုပြင်ခြင်းအတွက်ရိုးရှင်းသော function encapsulationultulishularulation များကိုပေးသည်။
function cached_parse_url(string $url): array|false {
static $cache = [];
// hash ကို cache ခလုတ်အဖြစ်အသုံးပြုပါ,ရေှာင်ရှား URL ရှည်လျားသော array keys များကိုကြာမြင့်စွာကြုံတွေ့ရသည်
$key = md5($url);
if (isset($cache[$key])) {
return $cache[$key];
}
$parsed = parse_url($url);
if ($parsed !== false) {
$cache[$key] = $parsed;
}
return $parsed;
}
ဤလုပ်ဆောင်ချက်၏အဓိကအချက်မှာ static variable variable ကို $ cache ဖြစ်သည်။ ၎င်းသည် function ၏နယ်ပယ်အတွင်းတွင်ကမ္ဘာလုံးဆိုင်ရာမျှဝေသည်။ ထို့ကြောင့် function ကိုအကြိမ်ပေါင်းများစွာဟုခေါ်သော်ပင် cache ကိုအချိန်အတိုင်းအတာတစ်ခုအထိထိမိလိမ့်မည်။
$urls = [
'https://gitbox.net/path?query=1',
'https://gitbox.net/path?query=1',
'https://gitbox.net/otherpath?query=2',
];
foreach ($urls as $url) {
$parts = cached_parse_url($url);
print_r($parts);
}
အပေါ်ကဥပမာမှာ URL သုံးခုရှိတယ်, သူတို့ထဲကတစ်ခုကပုံတူပွားခြင်း, Cached_parse_Url က တစ်ချိန်ကခွဲခြမ်းစိတ်ဖြာပါလိမ့်မယ်။
ပိုကြီးတဲ့သို့မဟုတ် Cross-Request Cache လိုအပ်ချက်များအတွက် Apcu ကိုသုံးနိုင်သည်။
function cached_parse_url_apcu(string $url): array|false {
$key = 'parsed_url_' . md5($url);
$cached = apcu_fetch($key);
if ($cached !== false) {
return $cached;
}
$parsed = parse_url($url);
if ($parsed !== false) {
apcu_store($key, $parsed);
}
return $parsed;
}
APCU ကို အသုံးပြုခြင်းသည် Cactes ကိုတောင်းဆိုမှုအသစ်များကိုဖြတ်သန်းရန်ခွင့်ပြုရန်ခွင့်ပြုသည်, 0 က်ဘ်အပလီကေးရှင်းများသို့မဟုတ် cli scripts များကိုစွမ်းဆောင်ရည်ပိုမိုကောင်းမွန်စေရန်သင့်တော်သည်။
Parse_Url သည် မှားယွင်းသောမမှန်ကန်သော URLs များကိုခွဲခြမ်းစိတ်ဖြာသောအခါ မှားယွင်းစွာ ပြန်လာလိမ့်မည်။ ရလဒ်များကိုသူတို့ကိုမ cache မတိုင်မီဆုံးဖြတ်ရန်အကြံပြုသည်။
cacheing ယန္တရားကိုယ်တိုင်က Memory Resource ကိုသိမ်းပိုက်လိမ့်မည်။
Multi-Threaded သို့မဟုတ်အလွန်အမင်းတစ်ပြိုင်နက်တည်းပတ် 0 န်းကျင်တွင်ပတ် 0 န်းကျင်ပတ် 0 န်းကျင်တွင် apcu ကိုအသုံးပြုပါကထိရောက်သောလုံခြုံမှုလိုအပ်သည်။
Parse_Url သည်အသေးအဖွဲလုပ်ဆောင်မှုတစ်ခုဖြစ်သော်လည်းကြိမ်နှုန်းမြင့်မားသောအချိန်တွင်၎င်း၏စွမ်းဆောင်ရည်သုံးစွဲမှုကိုလျစ်လျူရှု။ မရပါ။ ရိုးရှင်းသော cachead ယန္တရားကိုမိတ်ဆက်ပေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ခွဲခြမ်းစိတ်ဖြာမှုတိကျမှန်ကန်မှုကိုသေချာစေရန်စနစ်၏အရင်းအမြစ် overhead ကိုသိသိသာသာလျှော့ချနိုင်သည်။ cache ၏စွမ်းအားသည်အသေးစိတ်အချက်အလက်များကိုလည်းတန်ဖိုးထားနိုင်သည်။ PHP Projects သည်စွမ်းဆောင်ရည်ပိုမိုကောင်းမွန်သည့်လိုအပ်ချက်များရှိသော PHP စီမံကိန်းများအတွက်ဤ optimization သည်အလေ့အကျင့်အလွန်ထိုက်တန်သည်။