PHP တွင် Curl Shared Share Function ( Curl_Share_init () ) ကိုအသုံးပြုသောအခါ developer သည်မျှဝေထားသောအရင်းအမြစ်များကိုစနစ်တကျမဖြန့်ချိနိုင်ပါကသယံဇာတများစွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုအကျိုးသက်ရောက်စေမည့်သယံဇာတများယိုစိမ့်မှုပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ developer များအလားအလာရှိသောအန္တရာယ်များကိုရှောင်ရှားရန်ဤဆောင်းပါးသည် curl_share_init () နှင့် curl_share_close_close () ကိုအာရုံစိုက်ပါလိမ့်မည်။
curl_share_init () သည် PHP မှပေးသောဝေမျှလက်ကိုင်ကိုစတင်ရန် PHP မှပေးသော function တစ်ခုဖြစ်သည်။ စွမ်းဆောင်ရည်နှင့်အရင်းအမြစ်များကိုပြန်လည်အသုံးပြုရန်အတွက် DNS Cache, cookes များနှင့်ပိုမိုများပြားသော session များအကြားသတင်းအချက်အလက်များကိုဝေမျှရန်ဤလက်ကိုမျှဝေရန်အသုံးပြုနိုင်သည်။
မျှဝေထားသောလက်ကိုင်ကိုအသုံးပြုရန်ပုံမှန်ဖြစ်စဉ်မှာအောက်ပါအတိုင်းဖြစ်သည် -
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
shared လက်ကိုင်ကို curl_setop () မှတဆင့် curl တောင်းဆိုမှုများနှင့်ဆက်စပ်နိုင်ပါတယ်။
$ch = curl_init('https://www.m66.net/api/data');
curl_setopt($ch, CURLOPT_SHARE, $sh);
curl_exec($ch);
curl_close($ch);
ပြ problem နာက developer များစွာသည် curl_share_close () မျှဝေထားသောလက်ကိုင်များအသုံးပြုခြင်းကိုဖြန့်ချိပြီးနောက်အရင်းအမြစ်များကိုထုတ်လွှတ်ရန် Curl_Share_close () ကိုထုတ်လွှတ်ရန်မေ့နေကြသည်။
// အမှားဥပမာ:shared လက်ကိုင်ပိတ်မထားပါ
$sh = curl_share_init();
// ... စစ်ဆင်ရေးတစ်ခုစီးရီး
// သတိမေ့ curl_share_close($sh);
ဤပေါ့ဆမှုသည်ဆာဗာအတွင်းရှိအရင်းအမြစ်များကိုဆာဗာအတွင်း၌စဉ်ဆက်မပြတ်အသုံးပြုခြင်း (မှတ်ဉာဏ်ပေါက်ကြားခြင်း "သတိပေးခြင်း,
curl_share_Close_Close () ကို shared လက်ကိုင်ကိုအသုံးပြုပြီးနောက်သယံဇာတများကိုအခမဲ့ခေါ်ဆိုသင့်သည်။
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
// မျိုးစုံတောင်းဆိုမှုများလုပ်ဆောင်ပါ
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SHARE, $sh);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
}
curl_share_close($sh); // Shared အရင်းအမြစ်များကိုအခမဲ့
၎င်းသည်ပုံမှန် curlose () နှင့်ဆင်တူသည်။ သော့သည် developer များမျှဝေထားသောလက်များကိုလွှတ်ပေးရန်မလွယ်ကူကြောင်းဖြစ်သည်။
Curl Shared Handle ကိုတစ်ကိုယ်ရေဖြစ်ရန်ဒီဇိုင်းပြုလုပ်ထားပြီး Threads မျိုးစုံသို့မဟုတ်လုပ်ငန်းစဉ်များစွာအကြားမျှဝေခြင်းမပြုနိုင်ပါ။ ဆိုလိုသည်မှာ PHP-FPM Multi-process Model တွင်ကလေးဖြစ်စဉ်တစ်ခုစီသည်၎င်း၏ကိုယ်ပိုင် shared လက်ကိုင်ကိုစီမံရမည်။
မျှဝေထားသောလက်ကိုင်တစ်ခုကဆံပင်ကောက်ကောက်တောင်းခံမှုနှင့်ဆက်စပ်သည်နှင့်တပြိုင်နက်၎င်း၏မျှဝေခြင်းရွေးချယ်စရာများကိုပြုပြင်မွမ်းမံနိုင်ပါ။ ဥပမာအားဖြင့်:
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
// အသင်းအဖွဲ့မတိုင်မီက setting မှန်ကန်သည်,နောက်မှမပြုပြင်ပါနှင့်
Shared DNS cache သည် resolution ရလဒ်ကို "ဟောင်းနွမ်းသော" ဖြစ်စေသည်။ ကျိုးကြောင်းဆီလျော်သော TTL ကိုအမှန်တကယ်လိုအပ်ချက်များနှင့်အညီသတ်မှတ်ထားသင့်ပြီး cache ကိုပုံမှန်သန့်ရှင်းရေးလုပ်သင့်သည်သို့မဟုတ်မျှဝေထားသောလက်ကိုင်များကိုအားပြန်ကြားသင့်သည်။
HTTP တောင်းဆိုမှုသင်တန်းများကို encapsulating တွင် shared လက်ကိုင်ရေကန်ကိုအတန်းအသုတ်စက်များသို့မဟုတ် shutdown function များတွင်တစ်အိမ်လုံးကိုမိတ်ဆက်ပေးပြီးထုတ်ပြန်ခဲ့သည်။
Register_shutDown_Function () မှတ်ပုံတင်ခြင်းနှင့်သန့်ရှင်းရေးယုတ္တိဗေဒနှင့်ပေါင်းစပ်ခြင်း,
ချိတ်ဆွဲထားသည့်အရင်းအမြစ်များကိုမထုတ်ပြန်ရန်သေချာစေရန်မှတ်တမ်းများသို့မဟုတ် debug သတင်းအချက်အလက်များကိုထည့်သွင်းရန်မျှဝေခြင်းကိုသုံးပါ။
မြင့်မားသောတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်မျှဝေခြင်း၏စွမ်းဆောင်ရည်တိုးတက်မှုသည်သိသာထင်ရှားသည်ကိုအကဲဖြတ်ရန်အကြံပြုသည်။
curl_share_init () သည် curl စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သော်လည်းအရင်းအမြစ်စီမံခန့်ခွဲမှုတာဝန်ယူမှုနှင့်လည်းသက်ဆိုင်သည်။ developer များက curl_share_close_close () ကို အမြဲတမ်းခေါ်ဆိုသင့်သည်။ ဤနည်းဖြင့်သာမျှဝေခြင်းဖြင့်ယူဆောင်လာသည့်စွမ်းဆောင်ရည်ကိုအားသာချက်များကိုခံစားနေစဉ်မလိုအပ်သောအရင်းအမြစ်များနှင့်အန္တရာယ်များကိုစွန့်ပစ်ပစ္စည်းများကိုစွန့်ပစ်နိုင်သည်။