PHP တွင် curl_mamulti_ * လုပ်ဆောင်ချက်များသည်တစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်အစွမ်းထက်သောနည်းလမ်းဖြစ်သည်။ ထိုအစီအစဉ်၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုကိုတိုးတက်စေသည်။ ၎င်းတို့အနက် curl_multi_close () သည်အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအားလုံးကိုပြီးစီးပြီးနောက်၎င်းကိုနောက်ခံအရင်းအမြစ်များကိုဖြန့်ချိသည့်အတွက်အရေးကြီးသောခြေလှမ်းတစ်ခုဖြစ်သည်။ သို့သော်မလျော်ကန်စွာအသုံးပြုခဲ့လျှင်၎င်းသည်မှတ်ဉာဏ်ပေါက်ကြားမှုများသို့မဟုတ်တောင်းဆိုမှုကိုလုံးဝရပ်ဆိုင်းထားခြင်းမရှိပါ။
ဤဆောင်းပါးသည် running တောင်းဆိုမှုများကိုအဆုံးသတ်ရန် curl_multi_close () ကို မည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုရှင်းပြရန်အမှန်တကယ်ကုဒ်နမူနာများကိုအသုံးပြုလိမ့်မည်။
curl_multi_close () curl_multi_init () ကို curl_multi_init မှတွဲဖက်နောက်ဆုံးလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာ Multi Match Resource အရင်းအမြစ်များကိုပိတ်ပြီး၎င်းနှင့်ဆက်စပ်သောအရင်းအမြစ်များအားလုံးကိုဖြန့်ချိရန်ဖြစ်သည်။ ဤလက်ကိုင်ပေါင်းစုံတွင်ထည့်သွင်းထားသောဆံပင်ကောက်ကောက်ကိုအလိုအလျောက်မပိတ်ပါ။ ထို့ကြောင့်၎င်းကိုကိုယ်တိုင်ကိုင်တွယ်ရန်လိုအပ်သည်ကိုသတိပြုပါ။
ဤနေရာတွင် curlti_multi_ * လုပ်ဆောင်ချက်များနှင့်မှန်ကန်စွာပိတ်ထားသောအရင်းအမြစ်များကို အသုံးပြု. http တောင်းဆိုမှုများကိုအကောင်အထည်ဖော်ရန်စံသတ်မှတ်ချက်ဖြစ်သည်။
<?php
// တောင်းဆိုမှုကိုဖန်တီးပါ URL အခင်းအကျင်း
$urls = [
'https://gitbox.net/api/endpoint1',
'https://gitbox.net/api/endpoint2',
'https://gitbox.net/api/endpoint3',
];
// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
$curlHandles = [];
// တစ်ခုချင်းစီသည် URL ဖြစ်ပေါ်လာခြင်း单独的 curl handle နှင့်ထည့်ပါ multi handle အလယ်ပိုင်း
foreach ($urls as $i => $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[$i] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
$status = curl_multi_exec($multiHandle, $running);
if ($running) {
curl_multi_select($multiHandle); // ရေှာင်ရှား CPU အလွန်မြင့်မားသောထေို
}
} while ($running && $status == CURLM_OK);
// ရလဒ်များကိုနှင့်တစ်ခုချင်းစီကိုပိတ်ပါ curl handle
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
$info = curl_getinfo($ch);
echo "တောင်းဆိုမှုအခြေအနေကုဒ်: " . $info['http_code'] . "\n";
echo "တုံ့ပြန်မှုအကြောင်းအရာ: " . substr($response, 0, 100) . "...\n"; // အကြောင်းအရာအချို့ကိုသာပြပါ
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// နောက်ဆုံးအနီးကပ် multi handle
curl_multi_close($multiHandle);
ချို့ယွင်းချက် - လက်ကိုင်ကိုမဖယ်ရှားဘဲလက်ကိုင်ကိုပိတ်ပါ
// မှားယွင်းသောအသုံးပြုမှု
curl_close($ch); // အနီးကပ်အနီးကပ် curl handle
curl_multi_close($mh);
မှန်ကန်သောအမိန့်ဖြစ်သင့်သည် -
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
curl_multi_close($mh);
ချို့ယွင်းချက် - တောင်းဆိုမှုများအားလုံးကိုမစောင့်ပါ
အချို့သော developer များသည် curl_multi_exec () ကို တိုက်ရိုက် () ကိုတိုက်ရိုက်သို့မဟုတ်အနီးကပ်ပိတ်ထားလိမ့်မည် () ကိုတိုက်ရိုက်သို့မဟုတ်ပိတ်ထားလိမ့်မည်။ Do-do- here ကိုအသုံးပြုခြင်းသည်တောင်းဆိုမှုများအားလုံးကိုပြီးစီးရန်သေချာစေရန်ယုံကြည်စိတ်ချရသောနည်းလမ်းဖြစ်သည်။
ကြာမြင့်စွာပြေးရန်တောင်းဆိုမှုများအတွက် (ဖိုင်ကြီးများသို့မဟုတ်ဝေးလံခေါင်သီသောတွက်ချက်မှုများကိုဒေါင်းလုပ်လုပ်ခြင်းကဲ့သို့သော) ကိုအောက်ပါနည်းလမ်းများကိုထိန်းချုပ်နိုင်သည်။
ကျိုးကြောင်းဆီလျော်သော curlopt_timeout ထားပါ
CURL_MULTI_SELENT () CPU အသုံးပြုမှုကိုလျှော့ချရန် ()
curl_mamulti_info_read () ဖြင့် ပြန်လာသည့်အဆင့်အတန်းကိုစစ်ဆေးပြီးလုပ်ဆောင်ပါ။
ဥပမာ (အချိန်ကုန်ထိန်းချုပ်မှုကိုထည့်ပေါင်းခြင်း):
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // အများဆုံးကွပ်မျက်အချိန်သတ်မှတ်ထား30စက်ဏန့်
curl_multi_close () ကိုယ်နှိုက်သည်ရှုပ်ထွေးမှုမရှိပါ။ သို့သော်၎င်းကို curl_multi_remove_handle () နှင့် curl_clese () နှင့် curl_close () နှင့် curl_close ()) နှင့် curl_close () ကို အသုံးပြုရမည်။ တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းတောင်းဆိုသည့်အခြေအနေများတွင်ဆံပင်ကောက်ကောက်ကိုပိတ်ခြင်းနှင့်ပရိုဂရမ်ယိုစိမ့်မှုများကိုတိုးတက်စေရန်နှင့်အစီအစဉ်တည်ငြိမ်မှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းသည်ပုံမှန်ကောက်ကောက်ကိုပိတ်ထားသည်။
Multimaceed Network Reques Multimeaded Network Reques ကိုအသုံးပြုသောအခါ,
တစ် ဦး multi လက်ကိုင်ရန်တစ်ခုတည်းလက်ကိုင်ထည့်ပါ
Multi လက်ကိုင်ကို execute လုပ်ပါ
ရလဒ်များကိုရယူပါ
တစ်ခုတည်းလက်ကိုင်ဖယ်ရှားခြင်းနှင့်ပိတ်ပါ
နောက်ဆုံးတွင် Multi Multi လက်ကိုင်ပိတ်ပါ
အထက်ဖော်ပြပါနည်းလမ်းအားဖြင့်သင်သည် curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုထိရောက်စွာ အသုံးပြု. သင်၏ကုဒ်၏ထိန်းသိမ်းနိုင်မှုနှင့်လုပ်ငန်းခွင်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ဆက်သွယ်မှုအားလုံးကိုမှန်ကန်စွာအဆုံးသတ်နိုင်သည်။