ကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါ, ကောက်ကောက်သည်ရိုးရှင်းသော HTTP တောင်းဆိုမှုများကိုထောက်ပံ့ရုံသာမက cookies များ, DNS, SSL စသည့်အဆင့်မြင့်အင်္ဂါရပ်များကိုလည်းအထောက်အကူပြုသည်။
၎င်းတို့အနက် curl_share_init သည်ရုရှား cache, cookies များ, sSL session များကဲ့သို့သောအချက်အလက်များကိုမျှဝေရန်ဆံပင်ကောက်ကောက်အမျိုးမျိုးကိုခွင့်ပြုသည်။
သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင်လူအများစုကမေးလိမ့်မည် -
မျှဝေထားသော DNS cache ကိုထိရောက်သောလား။ အဲဒါကိုဘယ်လိုစောင့်ကြည့်မလဲ။
ဤဆောင်းပါးသည်သင့်အားတစ်ဆင့်ပြီးတစ်ဆင့်ခွဲခြမ်းစိတ်ဖြာရန်နှင့်အပြည့်အဝပါရွေးဥပမာတစ်ခုပေးရန်သင့်အားယူပါလိမ့်မည်။
အဆိုပါ curl_share_init () function ကို () function ကိုမျှဝေလက်ကိုင်ကိုစတင်ရန်အသုံးပြုသည်။ Curlopt_setopt ၏ curlopt_sare option နှင့် တွဲဖက်. ၎င်းသည်အချို့သောဒေတာများကိုမျှဝေရန် curloptes တောင်းဆိုမှုများကိုခွင့်ပြုသည်။ ဘုံမျှဝေထားသော contents များတွင်:
DNS cache ( curl_lock_data_dns )
Cookie ( curl_lock_data_cookie )
SSL session ( curl_lock_data_ssl_session )
ဥပမာအားဖြင့်:
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
ဤနည်းအားဖြင့်, curl မျိုးစုံသည်တူညီသော $ sh ကို ချည်နှောင်ထားပြီး DNS cache ကိုမျှဝေနိုင်သည်။
ဆံပင်ကောက်ကောက်သည် "Mondo DNS cache hits hits" ကို interface ကိုမပေးသော်လည်းသွယ်ဝိုက်လေ့လာနိုင်သည်။
ပထမတောင်းဆိုမှုအချိန်ကုန်ခံခြင်း - ပထမတောင်းဆိုချက်သည်များသောအားဖြင့် DNS resolution အချိန်ဖြစ်သည်။
နောက်ဆက်တွဲတောင်းဆိုမှုများအတွက်အချိန်ကုန်ခံခြင်း - မျှဝေထားသော DNS ကိုဖွင့်ထားလျှင် DNS အမည်ရှိသည့်နောက်ဆက်တွဲတောင်းဆိုမှုများသည်ဆုံးဖြတ်ချက်ကိုသိသိသာသာလျှော့ချသင့်သည်။
တနည်းအားဖြင့်ကျွန်ုပ်တို့သည် curlinfo_namelookup_time နှင့် curlinfo_total_time ကို စောင့်ကြည့်လေ့လာနိုင်သည်။
ဒိုမိန်းအမည်ဖြေရှင်းချက်အချိန်
စုစုပေါင်းအချိန်စားသုံးမှု
Namelookup_timeTime ကိုပထမတောင်းဆိုမှုနှင့်နောက်ဆက်တွဲတောင်းဆိုမှုကိုနှိုင်းယှဉ်ခြင်းအားဖြင့် DNS cache ကိုအကျိုးသက်ရောက်သည်ကိုသင်ဆုံးဖြတ်နိုင်သည်။
curl_share_init ကို အသုံးပြု. PHP ကုဒ်သည် https://m66.net/test သို့တောင်းဆိုမှုနှစ်ခုကိုပို့ခြင်းနှင့် DNS resolution ကိုပုံနှိပ်ခြင်းနှင့် DNS resolution အချိန်ကိုပုံနှိပ်ခြင်းဖြင့်ပေးပို့ခြင်း။
<?php
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
$url = 'https://m66.net/test';
// ပထမတောင်းဆိုချက်
$ch1 = curl_init($url);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_SHARE, $sh);
curl_exec($ch1);
$dns_time1 = curl_getinfo($ch1, CURLINFO_NAMELOOKUP_TIME);
$total_time1 = curl_getinfo($ch1, CURLINFO_TOTAL_TIME);
curl_close($ch1);
echo "ပထမတောင်းဆိုချက်:\n";
echo "DNS ခွဲခြမ်းစိတ်ဖြာအချိန်: {$dns_time1} စက်ဏန့်\n";
echo "စုစုပေါင်းအချိန်စားသုံးမှု: {$total_time1} စက်ဏန့်\n";
// စောင့်1စက်ဏန့်,အသစ်တောင်းဆိုမှုများကိုတုပ
sleep(1);
// ဒုတိယတောင်းဆိုချက်
$ch2 = curl_init($url);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $sh);
curl_exec($ch2);
$dns_time2 = curl_getinfo($ch2, CURLINFO_NAMELOOKUP_TIME);
$total_time2 = curl_getinfo($ch2, CURLINFO_TOTAL_TIME);
curl_close($ch2);
echo "\nဒုတိယတောင်းဆိုချက်:\n";
echo "DNS ခွဲခြမ်းစိတ်ဖြာအချိန်: {$dns_time2} စက်ဏန့်\n";
echo "စုစုပေါင်းအချိန်စားသုံးမှု: {$total_time2} စက်ဏန့်\n";
// သန့်ရှင်းရေးလုပ်သည်
curl_share_close($sh);
?>
? Enable Sharing : curl_share_init နှင့် curlshopt_Share ကို curlshare_init နှင့် curlshopt_share ကိုသုံးပါ။
? အချိန်ယူပါ - Curlinfo_Getinfo မှတဆင့် curlinfo_namelookup_time ကို ရယူပါ။
? နှိုင်းယှဉ်အကျိုးသက်ရောက်မှု - ပထမတောင်းဆိုချက်သည်များသောအားဖြင့်သိသာထင်ရှားသည့် DNS အချိန် (ထိုကဲ့သို့သောမီလီစက္ကန့်များစွာကဲ့သို့) ဒုတိယအကြိမ် cache သည်အကျိုးသက်ရောက်မှုရှိပါက Namelookup_time သည် 0 နှင့်နီးသည်။
တူညီတဲ့ဒိုမိန်းအမည် - အိမ်ရှင်အမည် (ဥပမာ M66.net ) သည် cache ကိုထိနိုင်သည်။
PHP Curl ဗားရှင်း - PHP ၏အဟောင်းများဗားရှင်းအချို့သည် curl_share ကို အပြည့်အ 0 မထောက်ပံ့နိုင်ပါ။ Curl ဗားရှင်းကိုစစ်ဆေးရန် Phpinfo () ကို အသုံးပြုရန်အကြံပြုသည်။
Thread Safety : အကယ်. သင်သည် curl_share ကို ပေါင်းစုံသို့မဟုတ်ဘက်စုံသောလုပ်ငန်းစဉ်ပတ် 0 န်းကျင်တွင်အသုံးပြုပါကလုံခြုံရေးကိုပိတ်ထားရန်လိုအပ်သည်။