PHP ၏ curl_multi_ * စီးရီး * စီးရီးလုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအတွက်လုပ်ဆောင်သည့်အခါမသင့်လျော်စွာကိုင်တွယ်လျှင်မသင့်လျော်စွာကိုင်တွယ်လျှင်မမှန်ကန်သောသို့မဟုတ်မမှန်ကန်သောတောင်းဆိုမှုများကို curlulti_close () ခေါ်ဆိုမှုများနှင့်ဆာဗာအမှားများကိုပင်ပေးပို့ရန်လွယ်ကူသည်။ တောင်းဆိုမှုများအားလုံးသည်လက်ကိုင်ကိုမပိတ်မီမှန်ကန်သောနှင့်မှန်ကန်သောမှန်ကန်ကြောင်းသေချာစေရန်အတွက်သင်ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်ရန်အောက်ပါရှုထောင့်များဖြင့်စတင်နိုင်သည်။
တစ် ဦး ချင်းစီ curl တောင်းဆိုမှုတစ်ခုချင်းစီ ( curl_init မှအစပြု) url ကိုမှန်ကန်စွာ format လုပ်ထားရန်လိုအပ်သောတောင်းဆိုမှု headers ကိုမှန်ကန်စွာတပ်ဆင်ထားရန်လိုအပ်သောတောင်းဆိုမှု headers များကမထည့်သွင်းမီ curl_multi_add_handle ကိုထည့်သွင်းခြင်းမပြုမီအပြည့်အဝစစ်ဆေးသင့်သည်။
နမူနာကုဒ်:
function createCurlHandle(string $url): ?\CurlHandle
{
if (!filter_var($url, FILTER_VALIDATE_URL)) {
return null;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // အချိန်ကုန်ထားပါ
return $ch;
}
ဆက်သွယ်မှုကိုအလျင်အမြန်ပိတ်ထားမည့်အစားလက်တွေ့ကျကျတုန့်ပြန်မှုအားလုံးကိုမှန်ကန်စွာတုန့်ပြန်ရန်သေချာစေရန်ကွပ်မျက်မှုအပြည့်အဝကွပ်မျက်မှုအဆင့်အတန်းကိုဖြတ်သန်းရန်လိုအပ်သည်။
ဥပမာ -
$urls = [
"https://gitbox.net/api/data1",
"https://gitbox.net/api/data2",
"https://gitbox.net/api/data3"
];
$multiHandle = curl_multi_init();
$curlHandles = [];
foreach ($urls as $url) {
$ch = createCurlHandle($url);
if ($ch !== null) {
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[] = $ch;
}
}
$running = null;
do {
$status = curl_multi_exec($multiHandle, $running);
if ($status > CURLM_OK) {
// မှတ်တမ်းတင်ခြင်းအမှားများ,သို့မဟုတ်လိုအပ်သလိုကြားဖြတ်
break;
}
// ခွင့်ပြုCPUချိုးပါ
curl_multi_select($multiHandle);
} while ($running > 0);
Curl_Multi_Close () ကိုတရားဝင်မခေါ်မီ, တစ် ဦး ချင်းစီလက်ကိုင်အားလုံးကိုဖြတ်သန်းသင့်သည်, ၎င်းတို့၏ပြန်လာကုဒ် ( curlinfo_http_code ) နှင့်အခြားအချက်အလက်များကိုအတည်ပြုရန်နှင့်အခြားသတင်းအချက်အလက်များကိုအတည်ပြုရန်လိုအပ်,
foreach ($curlHandles as $ch) {
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode !== 200) {
// ခြွင်းချက်ကိုင်တွယ်,ဥပမာအားဖြင့်, သစ်ထုတ်လုပ်ရေး、Re-Submit တောင်းဆိုမှုစသည်တို့ကိုစသည်တို့
echo "တောင်းဆိုမှုပျက်ကွက်,HTTPအခြေအနေကုဒ်:" . $httpCode . PHP_EOL;
}
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
curl_multi_close($multiHandle);
တောင်းဆိုမှုမျိုးစုံကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်နေသည့်အခြေအနေတစ်ခုတွင်တောင်းဆိုမှုတစ်ခုစီကိုမှန်ကန်စွာစီမံရန်မှန်ကန်စွာစီမံရန်အလွန်အရေးကြီးသည်။ Parameterscers မှစတင်သော parameters တွေကိုတင်းကြပ်စွာအတည်ပြုခြင်းမှသည်အဆုံးမတိုင်မီအဆင့်အတန်းကိုစောင့်ကြည့်လေ့လာခြင်းနှင့်အဆုံးမတိုင်မီပြန်လည်ထူထောင်ရေးကိုစစ်ဆေးခြင်းသည်မှားယွင်းသောတောင်းဆိုမှုများကြောင့်ဖြစ်ရတဲ့အရင်းအမြစ်စွန့်ပစ်ပစ္စည်းနှင့် server-side ဖိအားကိုလျော့နည်းစေနိုင်သည်။ curl_multi_multi_selection ကို သုံး. curl_multi_multi_selection ကို အသုံးပြု. သင်၏ curl_multi ခေါ်ဆိုမှုများသည်စနစ်တကျစနစ်၏ယုံကြည်စိတ်ချရမှုကိုတိုးတက်စေပြီးတည်ငြိမ်ပြီးတည်ငြိမ်နိုင်သည်။