PHP မှ curl_multi_ * PHP တွင် function ကိုများသောအားဖြင့်တစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများကိုအထူးသဖြင့်အ 0 တ်အထင်အမြင်မြင့်မားသောနေရာများအတွက်အသုံးပြုလေ့ရှိသည်။ curl_multi_close သည် curl_multi_init မှအစပြုထားသောဆံပင်ကောက်ကောက်အမျိုးအစားအားလုံးကိုပိတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်ဖြစ်နိုင်ချေများစွာတွင်အလွန်ထိရောက်သော်လည်း၎င်းသည်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်စွမ်းဆောင်ရည်ပြောင်ပြောင်တင်းတင်းဖြစ်လာမလား။ ဤဆောင်းပါးသည် curl_multi_close_close ၏အလုပ်လုပ်နိူင်ငံကိုနက်နက်နဲနဲလေ့လာဆန်းစစ်နိုင်ပြီးသက်ဆိုင်ရာအကောင်းဆုံးအကြံပြုချက်များကိုဖြည့်ဆည်းပေးနိုင်သည်။
curl_mamulti_ * လုပ်ဆောင်ချက်များသည် PHP ကိုတစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုကိုင်တွယ်ရန်စွမ်းဆောင်နိုင်သည့်ယန္တရားတစ်ခုပေးသည်။ အသုံးပြုရမည့်အဆင့်များမှာ -
curl_mamulti_init () : curl လက်ကိုင်ကိုအစပြုပါ။
curl_mamulti_add_handle () : မျိုးစုံသောဆံပင်ကောက်ကောက်အမျိုးမျိုးကို curl လက်ကိုင်ပေါင်းထည့်ပါ။
curl_mamulti_exec () : curl တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ။
curl_mamulti_getcontent () : တုံ့ပြန်မှု၏တုံ့ပြန်မှုအကြောင်းအရာကိုရယူပါ။
curl_multi_close () : လက်ကိုင်မျိုးစုံကိုဆက်ပြောသည်အားလုံးဆံပင်ကောက်ကောက်အမျိုးမျိုးပိတ်ထား။
curl_multi_close ၏ function သည် curl လက်ကိုင်ဖုန်းအားလုံးကိုပိတ်ပြီးသက်ဆိုင်ရာအရင်းအမြစ်များကိုလွှတ်ရန်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်များကိုတောင်းဆိုမှုများအားလုံးကိုပြီးဆုံးပြီးနောက်နှင့်သက်ဆိုင်ရာအချက်အလက်များကိုပြန်လည်ရယူပြီးသည့်နောက်လုပ်ဆောင်မှုကိုတောင်းဆိုရန်လိုအပ်သည်။
သို့သော်အထူးသဖြင့်ထောင်ပေါင်းများစွာသောတောင်းဆိုမှုများကိုပြုပြင်သည့်အခါ curl_multi_close ကွပ်ကဲစစ်ဆေးမှုသည်အလုပ်မလုပ်ပါက, အဘယ်ကြောင့်? နက်ရှိုင်းတဲ့ကြည့်ကြည့်ရအောင်။
တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင် curl_multi_clocks One One One One One Curl အားလုံးကိုပိတ်ရန်လိုအပ်ပါတယ်။ တောင်းဆိုမှုတစ်ခုချင်းစီအတွက် curl သည် currl သည် connection အချက်အလက်များ, တုန့်ပြန်မှုအချက်အလက်များစသည်တို့ကိုသိမ်းဆည်းရန်အချို့သောမှတ်ဉာဏ်ကိုခွဲဝေချထားပေးလိမ့်မည် ။
ဆံပင်ကောက်ကောက်သည် operating system ၏ network connection pool ကိုအသုံးပြုသည်။ ထို့ကြောင့် curl တောင်းဆိုမှုတစ်ခုစီသည်စနစ်၏နောက်ခံကွန်ယက်ချိတ်ဆက်မှုမှတစ်ဆင့်အမှန်တကယ်အကောင်အထည်ဖော်သည်။ တောင်းဆိုမှုများစွာပြီးဆုံးသွားသောအခါ curl_multi_close ကို curl_multi_close ရန်ခေါ်ဆိုမှုသည်ကွန်ယက်ဆက်သွယ်မှုအမြောက်အများကိုပိတ်ထားလိမ့်မည်။ အကယ်. တောင်းဆိုမှုအသံအတိုးအကျယ်သည်အလွန်ကြီးမားပါကဆက်သွယ်မှုကိုပိတ်ခြင်းလုပ်ငန်းစဉ်သည်စနစ်၏တုန့်ပြန်အချိန်ကိုထိခိုက်စေနိုင်သည်။
PHP ကိုယ်တိုင်သည်တစ်ကိုယ်ရေချည်မျှင်ဖြစ်သော်လည်း curl သည်တစ်ပြိုင်တည်းတောင်းဆိုမှုများပြုလုပ်သောအခါစီမံခန့်ခွဲမှုအတွက် operating system ၏ချည်များပေါ်တွင်မှီခိုလိမ့်မည်။ မြင့်မားသောတစ်ပြိုင်နက်တည်းဖြစ်ရပ်များတွင် curl_mamulti_exec () သည် တောင်းဆိုမှုကို လုပ်ဆောင်ရန် Threads မျိုးစုံကိုစတင်လိမ့်မည်။ အကယ်. တောင်းဆိုမှုများသည်အချိန်ကြာမြင့်စွာတုံ့ပြန်လျှင် curl_multi_close ကို ပိတ်ဆို့လိမ့်မည်။
curl_multi_close ကို ရှောင်ရှားနိုင်ရန်အတွက်စွမ်းဆောင်ရည်မြှင့်တင်မှုတစ်ခုဖြစ်လာစေရန်အတွက်အောက်ပါ optimization အစီအမံများကိုကျွန်ုပ်တို့ယူနိုင်သည်။
တစ်ပြိုင်နက်တည်းကတပြိုင်နက်တည်းတောင်းဆိုမှုများကိုစတင်ခြင်းကိုရှောင်ရှားရန်ကြိုးစားပါ။ ဥပမာအားဖြင့်, သင်သည် PHP ၏ curl_multi_Multi_select function ကို သုံး. တောင်းဆိုသောတစ်ဖန်တောင်းဆိုမှုအများဆုံးအရေအတွက်ကိုထိန်းချုပ်ရန်အသုံးပြုနိုင်သည်။
$multiHandle = curl_multi_init();
$handles = [];
for ($i = 0; $i < 1000; $i++) {
$url = "https://gitbox.net/api/v1/data/{$i}";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$handles[] = $ch;
}
$active = null;
do {
$mrc = curl_multi_exec($multiHandle, $active);
if ($active) {
curl_multi_select($multiHandle);
}
} while ($active && $mrc == CURLM_OK);
// အားလုံးလက်ကိုင်ပိတ်ပါ
foreach ($handles as $ch) {
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
curl_multi_close($multiHandle);
တောင်းဆိုမှုကိုကြာမြင့်စွာပိတ်ဆို့ခြင်းကိုရှောင်ရှားရန်တောင်းဆိုမှုတစ်ခုသည်နှေးကွေးစွာတုံ့ပြန်ပါကကျွန်ုပ်တို့အချိန်တိုအတွင်းပိတ်ပြီးအခြားတောင်းဆိုမှုများကိုဆက်လက်လုပ်ဆောင်နိုင်ရန်အတွက်တောင်းဆိုမှုတစ်ခုစီအတွက်သင့်လျော်သောအချိန်ကိုသတ်မှတ်နိုင်သည်။ သင့်လျော်သောအချိန်ကုန်ချိန်ညှိချက်များသည်စနစ်အရင်းအမြစ်များကိုစွန့်ပစ်ပစ္စည်းများကိုလျော့နည်းစေသည်။
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // တောင်းဆိုမှုအချိန်ကုန်အချိန်သတ်မှတ်ပါ10စက်ဏန့်
ဖြစ်ရပ်များအတွက်ဒိုမိန်းအမည်ကိုထပ်ခါတလဲလဲတောင်းဆိုမှုများအတွက်ထပ်ခါတလဲလဲတောင်းဆိုမှုများကိုထပ်ခါတလဲလဲတောင်းဆိုမှုများနှင့်ချိတ်ဆက်မှုနည်းစနစ်များကိုထည့်သွင်းစဉ်းစားနိုင်သည်။ curlopt_forbid_reustion_rece_reuse_rece_reuse option ကို curlopt_forbid_reuse option ကိုထောက်ပံ့ပေးသည်။
curl_setopt($ch, CURLOPT_FORBID_REUSE, true); // Connection Reuse ကိုပိတ်ပါ
ဆာဗာသည်တစ်ပြိုင်နက်တည်းဆက်သွယ်မှုများစွာကိုကိုင်တွယ်နိုင်ကြောင်းသေချာစေရန်နှင့် operating system ၏ file luckits ကိုညှိခြင်း,
အထူးသဖြင့်တစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင် curl_mamulti_close သည် စွမ်းဆောင်ရည်မြှင့်တင်ရေးဖြစ်လာနိုင်သည်။ အထူးသဖြင့်တောင်းဆိုမှုများအရေအတွက်သည်အလွန်ကြီးမားသည့်အခါ, သို့သော်ကျိုးကြောင်းဆီလျော်စွာထိန်းချုပ်ခြင်းကိုကျိုးကြောင်းဆီလျော်စွာထိန်းချုပ်ခြင်း , connection pools များကိုအသုံးပြုခြင်း, connection pools များစသဖြင့်စနစ်၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။