PHP တွင် ဆံပင်ကောက်ကောက် သည် HTTP တောင်းဆိုမှုများနှင့်အပြောင်းအလဲများအတွက်တုံ့ပြန်မှုများပေးပို့ခြင်းအတွက်အလွန်အစွမ်းထက်သောစာကြည့်တိုက်ဖြစ်သည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများပြုလုပ်သောအခါကျွန်ုပ်တို့သည်များသောအားဖြင့် curl_multi_ * function ကိုအသုံးပြုလေ့ရှိသည်။ တောင်းဆိုမှုများတိုးများလာသည်နှင့်အမျှအမှားအယွင်းများကိုဖယ်ရှားခြင်းနှင့်ပြ esual နာဖြေရှင်းခြင်းများသည်အထူးအရေးကြီးသည်။ ဤဆောင်းပါးသည် curlulti_cloces function နှင့် curl_error ကိုမည်သို့အသုံးပြုရမည်ကိုလေ့လာပါမည်။
curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များသည် PHP ရှိလုပ်ဆောင်ချက်များကိုတစ်ပြိုင်နက်တည်းဆန်းစစ်ခြင်းကိုစတင်ခဲ့သည်။ တစ်ခုတည်းသော curl_exec နှင့်မတူဘဲ curl_multi_ * သည် တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်နိုင်ပြီး၎င်းတို့၏တုံ့ပြန်မှုများကိုပြုလုပ်နိုင်သည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်များတွင်:
curl_multi_init () - ဆံပင်ကောက်ကောက်မျိုးစုံကိုစတင်ပါ
curl_multi_add_handle () - လက်ကိုင်မျိုးစုံလက်ကိုင်တစ်ခုထည့်ပါ
curl_mamulti_exec () : ထပ်ဆောင်း curl တောင်းဆိုမှုများကိုလုပ်ဆောင်ပါ
curl_mamulti_getcontent () - Curl တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုအကြောင်းအရာကိုရယူပါ
curl_multi_remove_handle () - လက်ကိုင်မျိုးစုံမှလက်ကိုင်တစ်ခုတည်းကိုဖယ်ရှားသည်
curl_multi_close () : curl တောင်းဆိုမှုများအားလုံးကိုပိတ်ပါ
curl_multi_close သည်တောင်းဆိုမှုများအားလုံးကိုအကောင်အထည်ဖော်ပြီးနောက် Multi-hands multi လုပ်ဖော်ကိုင်ဖက်များကိုပိတ်ထားရန်အသုံးပြုသည် ။ ချည်မျှင်ပေါင်းစုံတောင်းဆိုမှုများတွင်တောင်းဆိုမှုများကိုများသောအားဖြင့်တစ်ချိန်တည်းတွင်ပြုလုပ်လေ့ရှိပြီးအမှားအယွင်းများချက်ချင်းပေါ်လာမည်မဟုတ်ပါ။ ကျိုးကြောင်းဆီလျော်စွာဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့အမှားများကိုဖမ်းရန်နှင့်အမှားအယွင်းများကိုကျွန်ုပ်တို့ကူညီနိုင်သည်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည်အမျိုးမျိုးသောလက်ကိုင်ပေါင်းများစွာကို အစပြု. တောင်းဆိုမှုတစ်ခုစီအတွက်လွတ်လပ်သောဆံပင်ကောက်ကောက်ကိုဖန်တီးရန်လိုအပ်သည်။
$mh = curl_multi_init(); // မျိုးစုံလက်ကိုင်အစပျိုး
$urls = [
"https://example.com/api/endpoint1",
"https://example.com/api/endpoint2",
"https://example.com/api/endpoint3",
];
$curlHandles = [];
foreach ($urls as $index => $url) {
$ch = curl_init($url); // တစ်ခုတည်းကန ဦး cURL လက်ကိုင်
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curlHandles[$index] = $ch;
curl_multi_add_handle($mh, $ch); // 将လက်ကိုင်添加到多လက်ကိုင်中
}
တောင်းဆိုမှုအားလုံးကိုအကောင်အထည်ဖော်ရန်နှင့်၎င်းတို့၏ကွပ်မျက်အဆင့်အတန်းကိုစောင့်ကြည့်ရန် curl_multi_exec ကို သုံးပါ။
$running = null;
do {
curl_multi_exec($mh, $running); // တောင်းဆိုမှုကို execute
curl_multi_select($mh); // စစ်ဆင်ရေးဖြည့်စွက်ရန်စောင့်ပါ
} while ($running > 0);
တောင်းဆိုမှုများအားလုံးကိုပြီးဆုံးသည်နှင့်တပြိုင်နက် curl_multi_getcontent မှတဆင့်တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုအကြောင်းအရာများကို curl_multi_getcontent နှင့် curl_Error ကို သုံးနိုင်သည်။
foreach ($curlHandles as $index => $ch) {
$response = curl_multi_getcontent($ch); // တုန့်ပြန်အကြောင်းအရာကိုရယူပါ
if (curl_errno($ch)) {
// အမှားမက်ဆေ့ခ်ျကိုဖမ်းယူ
$error_msg = curl_error($ch);
echo "မေးမြန်း {$urls[$index]} အမှားတစ်ခုဖြစ်ပွားခဲ့သည်: $error_msg\n";
} else {
echo "မေးမြန်း {$urls[$index]} အောင်မြင်ခြင်း,တုံ့ပြန်မှုအကြောင်းအရာ: $response\n";
}
curl_multi_remove_handle($mh, $ch); // 从多လက်ကိုင်中移除
curl_close($ch); // 关闭单个လက်ကိုင်
}
နောက်ဆုံးအနေဖြင့်လက်ကိုင်မျိုးစုံကိုပိတ်ပြီးအရင်းအမြစ်များကိုလွတ်မြောက်ရန် curl_multi_close ကို သုံးပါ။
curl_multi_close($mh); // 关闭多လက်ကိုင်
ကျွန်ုပ်တို့တွင် API တောင်းဆိုမှုများစာရင်းရှိသည်ဆိုပါစို့။ အထက်ပါနည်းလမ်းများမှတဆင့်ကျွန်ုပ်တို့သည်အမှားကိုဖမ်းပြီးအမှားသတင်းကိုပုံနှိပ်နိုင်သည်။ ပုံမှန်အမှားများတွင် DNS resolution ပျက်ကွက်ခြင်း, connection timeout စသည်တို့ပါဝင်သည်။ များသောအားဖြင့် curl_Error သည် အမှားအယွင်းများ၏သတ်သတ်မှတ်မှတ်အကြောင်းရင်းကိုခွဲခြားသိမြင်စေသည်။
Multi-Threaded တောင်းဆိုမှုများအတွက်အမှားစစ်ဆေးခြင်းနှင့်ပူးပေါင်းရန် curl_multi_close နှင့် curl_error ကို အသုံးပြုခြင်းသည်အလွန်ထိရောက်သော debugging နည်းလမ်းဖြစ်သည်။ တောင်းဆိုမှုတစ်ခုစီအတွက်အမှားအယွင်းများကိုကျိုးကြောင်းဆီလျော်စွာစုစည်းခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများတွင်ပေါ်ပေါက်လာသောပြ issues နာများကိုလျင်မြန်စွာရှာဖွေ။ ဖြေရှင်းနိုင်သည်။ မှတ်ချက်ချသည်မှာတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုကိုင်တွယ်သောအခါ code ကိုရှင်းရှင်းလင်းလင်းနှင့်အတိုချုပ်ထားရန်ကြိုးစားပါ,