Performance optimization ဆိုသည်မှာ PHP တွင်ကွန်ယက်တောင်းဆိုမှုများအတွက်ဆံပင်ကောက်ကောက်ကိုအသုံးပြုသည့်အခါတွင်တီထွင်သူများအလွန်စိုးရိမ်ဖွယ်ရာဖြစ်သည့်ရှုထောင့်တစ်ခုဖြစ်သည်။ ဆံပင်ကောက်ကောက်သည် connection ပြန်လည်သုံးသပ်ခြင်းကိုမကြာခဏ TCP ဆက်သွယ်မှုတည်ထောင်ခြင်းကြောင့်ဖြစ်ပေါ်လာသော overhead ကိုလျှော့ချနိုင်သည်။ Multi-Inquest အခြေအနေများတွင်စွမ်းဆောင်ရည်ကိုပိုမိုတိုးတက်စေရန် PHP Curl သည် Curl_share_init () function ကိုပေးသည်။ ၎င်းသည် DNS cache, connection finces များစသည့်မျိုးစုံလက်ကိုင်များအကြားအရင်းအမြစ်များကိုဝေမျှရန်အသုံးပြုသော curl_share_init () function ကိုထောက်ပံ့ပေးသည်။ ရှည်လျားသောဆက်သွယ်မှုစီမံခန့်ခွဲမှုတွင်မည်သည့်အခန်းကဏ် play မှပါဝင်နိုင်သနည်း။ ဤဆောင်းပါးသည်ဤပြ issue နာကိုလက်တွေ့အသုံးပြုမှုရှုထောင့်မှနက်နက်နဲနဲလေ့လာသုံးသပ်လိမ့်မည်။
curl_share_init () သည် PHP ၏ဆံပင်ကောက်ကောက်ကိုချဲ့ထွင်ခြင်းဖြင့်ပေးထားသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤလက်ကိုင်သည် curl တောင်းဆိုမှုများအကြားအရင်းအမြစ်များကိုမျှဝေနိုင်သည်။ curlopt_setopt () function ကို curlopt_SARE option ကို အသုံးပြု. curloptop () function ကို သုံး. ကောက်ကောက်တောင်းဆိုမှုများသည်တူညီသော shaled လက်ကိုင်ကိုခညျြနှောငျနိုင်သည်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://m66.net/api/endpoint1");
curl_setopt($ch1, CURLOPT_SHARE, $sh);
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://m66.net/api/endpoint2");
curl_setopt($ch2, CURLOPT_SHARE, $sh);
ချိတ်ဆက်မှုပြန်လည်အသုံးပြုမှုသည်တူညီသောအခြေခံဆက်သွယ်မှုကိုတူညီသောအခြေခံချိတ်ဆက်မှု (များသောအားဖြင့် TCP / 1.1 အတွက်အများအားဖြင့်ရှင်သန်နေသည်) ကိုရည်ညွှန်းသည်။ ပုံမှန်အားဖြင့် Curl သည် condition မြှောက်မကိန်းများအတွက်ယန္တရားတစ်ခုနှင့်ပါ 0 င်သည်။ curl_share_init () ၏မူလရည်ရွယ်ချက်မှာဆက်သွယ်မှုအချက်အလက်များကိုမျှဝေရန်လွတ်လပ်သောဆံပင်ကောက်ကောက်အမျိုးမျိုးကိုခွင့်ပြုရန်ဖြစ်သည်။
သို့သော်အဓိကအချက်မှာ curl ကိုယ်နှိုက်၏ချိတ်ဆက်မှုနှင့်ချိတ်ဆက်မှုမြှောက်ချိတ်ခြင်း function ကိုမျှဝေခြင်းလက်ကိုင်မှတဆင့်အကောင်အထည်ဖော်ခြင်းမရှိပါ။
တစ်နည်းပြောရရင်တော့:
curl_share_init () ကိုအဓိကအားဖြင့် DNS cache, SSL session များ, cookies များနှင့်အခြားအရင်းအမြစ်များကိုမျှဝေရန်အသုံးပြုသည်။
၎င်းသည်အဆက်မပြတ်နှင့်အဆက်အသွယ်မြှောက်ခြင်းများကိုတိုက်ရိုက်မထောက်ပံ့ပါ။
စစ်မှန်သောဆက်သွယ်မှုခုံးများအောင်မြင်ရန်သင် curl_multi_ * လုပ်ဆောင်ချက်များကိုအသုံးပြုသင့်သည်။
ထို့ကြောင့် curl_share_init () သည်ရှည်လျားသောဆက်သွယ်မှုမြှောက်မကိန်းများအတွက်အထူးဒီဇိုင်းမထားနိုင်ပါ။
curl_share_init () သည် connection pools များကိုတိုက်ရိုက်စီမံခြင်းမရှိသော်လည်းရှည်လျားသော connection system များတွင်တန်ဖိုးရှိဆဲဖြစ်သည်။
DNS Cache Multiplexing : DNS Query သည်တောင်းဆိုမှုများစွာသည်တူညီသောအိမ်ရှင်ကို 0 င်ရောက်နိုင်သည့်အချိန်တွင်အချိန်ကုန်သောလည်ပတ်မှုဖြစ်သည်။ Curl_lock_Data_DNs မှတဆင့်လက်ကိုင်မျိုးစုံသည် resolution ရလဒ်များကိုမျှဝေနိုင်သည်, DNS မေးမြန်းချက်အရေအတွက်ကိုလျှော့ချနိုင်ပြီးတောင်းဆိုမှုလုပ်ငန်းစဉ်ကိုအရှိန်မြှင့်နိုင်သည်။
SSL session cachextlexing : curl_lock_data_ssession ကိုဖွင့်ထားသည့်အခါ SSL sessions များကို HTTPS တောင်းဆိုမှုများအကြားမျှဝေနိုင်သည်။
Cookie စီမံခန့်ခွဲမှု - curl_lock_data_cookie ကို သုံး. cookie အချက်အလက်များကိုတောင်းဆိုမှုမျိုးစုံအကြား cookie အချက်အလက်များကိုမျှဝေနိုင်သည်။
၎င်းသည်ဆက်သွယ်မှုလက်ကိုင်များပြန်လည်အသုံးပြုခြင်းတွင်တိုက်ရိုက်ပါ 0 င်ခြင်းမရှိသော်လည်းရှည်လျားသော connection ပေါ်လစီများ (DNS မေးမြန်းခြင်းများနှင့် tls handshake overhead) ကိုအထောက်အကူပြုသောအရံယန္တရားများတွင်စွမ်းဆောင်ရည်မြင့်မားခြင်းတွင်အရေးပါသောအခန်းကဏ် plays မှပါ 0 င်နေဆဲဖြစ်သည်။
curl_share_init () သူ့ဟာသူသည်ရှည်လျားသောဆက်သွယ်မှုများကိုစီမံခန့်ခွဲခြင်းသို့မဟုတ်ပြန်လည်အသုံးပြုခြင်းအတွက်တာ 0 န်မရှိပါ။ ၎င်း၏ရည်ရွယ်ချက်မှာအဓိကအားဖြင့် DNS Cache, SSL sessions များကဲ့သို့သောအရင်းအမြစ်များကိုမျှဝေခြင်းနှင့် curl တောင်းဆိုမှုများအကြား cookies များကဲ့သို့သောအရင်းအမြစ်များကိုမျှဝေခြင်းကိုအာရုံစိုက်သည်။ ထိရောက်သောကြာမြင့်စွာဆက်သွယ်မှုခတိုးများအောင်မြင်ရန် curl_multi_ * series interfaces ကိုအသုံးပြုခြင်းကို ဦး စားပေးသင့်သည်။ Curl_share_init () curl_share_init () သည် ဆက်စပ်မှုမြှောက်ပြခန်းများနှင့်စပ်လျဉ်း။ အထောက်အပံ့ကိုထောက်ပံ့ပေးနိုင်ပြီးယေဘုယျတောင်းဆိုမှုစွမ်းရည်ကိုတိုးတက်စေသည်။
ထို့ကြောင့်အမြင့်ဆုံးသော PHP ကွန်ယက်ဆက်သွယ်ရေးအစီအစဉ်များတည်ဆောက်သည့်အခါ curl_share_init () သည်တန်ဖိုးရှိသည့် tool တစ်ခုဖြစ်သော်လည်း၎င်းသည်ရှည်လျားသောဆက်သွယ်မှုမြှောက်ခဲခြင်းအတွက်အဓိကကိရိယာများအတွက်အဓိကကိရိယာတစ်ခုမဟုတ်ပါ။