Php Concurrencencency Powarios တွင် PHP developer များက curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုလေ့ကျင့်သုံးလေ့ရှိသည်။ ၎င်းတို့အနက် curl_mamulti_close () သည် curl_multi လက်ကိုင်ကိုပိတ်ရန်အသုံးပြုသောအရေးကြီးသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော်မလျော်ကန်စွာအသုံးပြုပါက၎င်းသည်အလုံးစုံစွမ်းဆောင်ရည်ကိုနှေးကွေးစေနိုင်သည်။ ဤဆောင်းပါးသည်အတိမ်အနက်ကိုပိုမိုနက်ရှိုင်းစွာလေ့လာသုံးသပ်ရမည် ။
curl_multi_init ကိုအသုံးပြုပြီး multi-hands multi-accounts ကိုဖန်တီးပြီးနောက်, curl_mamulti_add_add_addle () နှင့်သီးခြား curl အရင်းအမြစ်များကိုပေါင်းထည့်ပြီး curl_mamulti_exec () မှတဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကို execute ။ တောင်းဆိုမှုများအားလုံးကိုပြီးဆုံးသွားသောအခါ curl_multi_close () ကို Multi-Hance အရင်းအမြစ်နှင့်အခမဲ့မှတ်ဉာဏ်ကိုပိတ်ရန်အသုံးပြုသည်။
မျက်နှာပြင်ပေါ်တွင် curl_multi_close () သည်နောက်ဆက်တွဲတစ်ဆင့်သည်အပြီးတွင်စွမ်းဆောင်ရည်နှင့်လုံးဝမသက်ဆိုင်ပါ။ သို့သော်အမှန်မှာ, တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအမြောက်အများပြီးနောက်မှားယွင်းသော shutdown method or timing သည် memory ယိုစိမ့်မှု, သယံဇာတများကိုပိတ်ဆို့ခြင်း, သယံဇာတအရင်းအမြစ်ပိတ်ဆို့ခြင်းကိုဖြစ်ပေါ်စေနိုင်သည်။
Curl_multi_Close () ကိုခေါ်ဆိုခြင်း Curl_multi_close () ကိုအပြည့်အ 0 မပြီးဆုံးမီ,
Class လက်ကိုင်ကိုမှန်ကန်စွာမသန့်ရှင်းပါ။ curl_mamulti_remove_handle () ကို မပိတ်မီ class လက်ကိုင်ကိုမှန်ကန်စွာမဖယ်ရှားပါကစနစ်သည်ပျက်စီးခြင်းကိုလုံးလုံးလျားလျားတိုးပွားစေလိမ့်မည်။
အသုတ်တောင်းဆိုမှုများအရေအတွက်သည်ကြီးမားလွန်းသည်။ ထောင်နှင့်ချီသောအပိုဒ်လက်ကိုင်များကိုတစ်ချိန်တည်းတွင်စီမံပါ။ curl_multi_close () ကိုမှန်ကန်စွာဟုခေါ်သည်။
curl_multi_close () () ကို မခေါ်မီအောက်ပါအစီအစဉ်များတွင်လည်ပတ်သင့်သည်။
$multiHandle = curl_multi_init();
$chList = [];
for ($i = 0; $i < 100; $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://gitbox.net/api/endpoint_$i");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$chList[] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
do {
$status = curl_multi_exec($multiHandle, $running);
curl_multi_select($multiHandle);
} while ($running > 0);
// တစ်ခုချင်းစီကိုတစ် ဦး ချင်းစီကိုင်တွယ်ဖယ်ရှားခြင်းနှင့်ပိတ်ပါ
foreach ($chList as $ch) {
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// နောက်ဆုံးအနီးကပ်multiလက်ကိုင်
curl_multi_close($multiHandle);
အဓိကအချက်များအကျဉ်းချုပ် -
curl_multi_remove_handle () အပိုဒ်လက်ကိုင်ကိုသန့်ရှင်းရေးလုပ်ပါ
curl_close () တစ် ဦး ချင်းစီကိုယ်ပွားကိုင်တွယ်သည်
နောက်ဆုံးတော့ curl_multi_close () Multi-handle အရင်းအမြစ်ကိုပိတ်လိုက်တယ်
ဤအပြောင်းအလဲသည်မှတ်ဥာဏ်ယိုစိမ့်မှုနှင့်နှောင့်နှေးမှုများကိုဖြန့်ချိစေနိုင်သည်။
တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်မပို့ပါနှင့်။ သင်သည်အများဆုံးတစ်ပြိုင်နက်တည်းငွေပမာဏကို သတ်မှတ်. အသုတ်များတွင်ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်တောင်းဆိုမှုများ 20 ကိုတစ်ကြိမ်တွင်သာလုပ်ဆောင်သည်။
$multiHandle = curl_multi_init();
$chList = [];
$maxConcurrent = 20;
$urls = [];
for ($i = 0; $i < 1000; $i++) {
$urls[] = "https://gitbox.net/api/endpoint_$i";
}
$index = 0;
do {
// အများဆုံးတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုထည့်သွင်းခြင်း
$chList = [];
for ($i = 0; $i < $maxConcurrent && $index < count($urls); $i++, $index++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urls[$index]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$chList[] = $ch;
}
do {
$status = curl_multi_exec($multiHandle, $running);
curl_multi_select($multiHandle);
} while ($running > 0);
// ဖယ်ရှားခြင်းနှင့်ပိတ်ပါ
foreach ($chList as $ch) {
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
} while ($index < count($urls));
curl_multi_close($multiHandle);
အကျိုးသက်ရောက်မှု
ထိန်းချုပ်မှုစနစ်ဝန်
မှတ်ဥာဏ်ပေါက်ကွဲမှုကိုရှောင်ကြဉ်ပါ
curl_multi_close () () သည် အရင်းအမြစ်များကိုလျင်မြန်စွာထုတ်လွှတ်နိုင်သည်ကိုသေချာပါစေ
ဆာဗာဘေးထွက် ( Gitbox.Net ကဲ့သို့) သည် http / 2 ကိုထောက်ပံ့ပါကတောင်းဆိုမှုများစွာသည်တူညီသောဆက်သွယ်မှုကိုသိသိသာသာလျှော့ချနိုင်သည်။ သင် curlpipe_multiplex ကို ဖွင့်နိုင်သည်။
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
curl_setopt($multiHandle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
ဤနည်းအားဖြင့် curl_multi_close () သည် ပိုမိုနည်းပါးသောဆက်သွယ်မှုနည်းပါးသောကြောင့်ပိတ်သည့်အခါပိုမိုမြန်ဆန်သည်။
curl_multi_close () () သည် curl concurrencencencencencencencency all Process တစ်ခုလုံး၏နောက်ဆုံးခြေလှမ်းသာဖြစ်သော်လည်း၎င်း၏မှန်ကန်သောအသုံးပြုမှုသည် 0 က်ဘ 0 ကိုအ 0 န်းနှင့်ကြိမ်နှုန်းတောင်းဆိုမှုများအတွင်း PHP အစီအစဉ်များ၏တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုက်ရိုက်အကျိုးသက်ရောက်လိမ့်မည်။ အဆုပ်လက်ခုပ်ချလောက်ောင့်အဆုပ်အ 0 င်လက်ကိုင်လက်ကိုင်များကိုထိန်းချုပ်ခြင်းဖြင့်တစ်ပြိုင်နက်တည်းထိန်းချုပ်ခြင်းနှင့်မြဲမြဲချိတ်ဆက်မှုများကိုအသုံးချခြင်းသည်စနစ်၏တုန့်ပြန်မှုမြန်နှုန်းနှင့်အရင်းအမြစ်အသုံးချမှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
စွမ်းဆောင်ရည်မြင့် PHP applications များကိုဤအသေးစိတ်အကောင်းမြင်များတွင်မကြာခဏဝှက်ထားလေ့ရှိသည်။