curl_multi_add_handle () , curl_multi_exec () , curl_mamulti_getcontent (), curl_mamulti_getcontent () , curl_mamulti_cetcontent () နှင့် curl_mamulti_close ()) နှင့် curl_mamulti_close ( ) နှင့်ဆက်စပ်သောလုပ်ဆောင်ချက်များသည်အလွန်လက်တွေ့ကျသည်။ ဤ interfaces များသည်အထူးသဖြင့် 0 က်ဘ်စာမျက်နှာဒေတာအမြောက်အများကိုတွားသွားသည့် interfaces များစုဆောင်းခြင်း,
သို့သော် curl_multi_close () ကိုမခေါ်မီတောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လာတန်ဖိုးကိုစုဆောင်းရန်လိုအပ်သည်။ ကွဲပြားခြားနားသောတောင်းဆိုမှုများကိုကွဲပြားခြားနားသောပုံစံများနှင့်ပြည်နယ်များအတွက်ရလဒ်များကိုပြန်ပို့နိုင်ပါသည်။ ဤပြန်လည်ထူထောင်ရေးတန်ဖိုးများကိုထိရောက်စွာကိုင်တွယ်ပုံသည် developer များရင်ဆိုင်ရမည့်ပြ a နာတစ်ခုဖြစ်သည်။
ဤဆောင်းပါးသည် curl_multi_close ()) မခေါ်မီပြန်လည်ထူထောင်ရေးတန်ဖိုးများကိုမည်သို့ဖွဲ့စည်းတည်ဆောက်ပုံကိုမည်သို့ဖွဲ့စည်းရမည်ကိုအသေးစိတ်ရှင်းပြပါမည်။ အောင်မြင်သောတုန့်ပြန်မှု,
$multiHandle = curl_multi_init();
$curlHandles = [];
$urls = [
'https://gitbox.net/api/data1',
'https://gitbox.net/api/data2',
'https://gitbox.net/api/data3',
];
// မျိုးစုံကိုအစပြု cURL handle
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
curl_multi_exec($multiHandle, $running);
curl_multi_select($multiHandle);
} while ($running > 0);
ကွပ်မျက်ပြီးဆုံးပြီးနောက်အကြောင်းအရာနှင့်အခြားသတင်းအချက်အလက်များကိုရယူရန်လက်ကိုင်တစ်ခုစီကိုဖြတ်သန်းလေ့ရှိသည်။
$responses = [];
foreach ($curlHandles as $ch) {
$content = curl_multi_getcontent($ch);
$error = curl_error($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$responses[] = [
'content' => $content,
'error' => $error,
'http_code' => $httpCode,
];
// တစ်ခုတည်းအခမဲ့ handle
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
ဒေတာအားလုံးကိုစုဆောင်းပြီးနောက်နောက်ဆုံးအဆင့်သည် Multi Multi Multi Multi ကိုပိတ်ရန်ဖြစ်သည်။
curl_multi_close($multiHandle);
အထက်ဖော်ပြပါပြုပြင်ထုတ်လုပ်မှုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်နောက်ဆုံးတွင်စနစ်တကျ Reses Array ကိုနောက်ဆုံးတွင်ရရှိသည်။
[
[
'content' => '{...}', // JSONသို့မဟုတ်HTMLစောင့်
'error' => '', // အဘယ်သူမျှမအမှားရှိလျှင်
'http_code' => 200,
],
[
'content' => '',
'error' => 'Could not resolve host: gitbox.net',
'http_code' => 0,
],
...
]
ဤနည်းအားဖြင့် Multi Multi Multi Multi ကိုမပိတ်မီ, တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုတန်ဖိုးများကိုပုံစံဖြင့်စုဆောင်းနိုင်သည်။ ၎င်းသည်သစ်ထုတ်လုပ်ခြင်း, အမှားခွဲခြမ်းစိတ်ဖြာခြင်း,
- HTTP 5xx Retry, HTTP 4xx Logging သတိပေးချက်များအတွက်တောင်းဆိုမှုတစ်ခုစီအတွက် အပြောင်းအလဲနဲ့ မူဝါဒများသတ်မှတ်ခြင်း။
Data format ကိုကြိုတင်အတည်ပြုခြင်း - JSON_Decode () ကို အသုံးပြုရန်ကြိုးစားပါ။
Response Mapping Identity : အကယ်. သင်ရာနှင့်ချီသောတောင်းဆိုမှုများကိုသင်လုပ်ဆောင်လိုပါကလက်ကိုင်တစ်ခုစီအတွက်လက်ကိုင်တစ်ခုစီအတွက်စိတ်ကြိုက်လက္ခဏာများ (url သို့မဟုတ် id) ကိုသတ်မှတ်ရန်အကြံပြုသည်။
Curl_multi_selecte () ကိုကျိုးကြောင်းဆီလျော်စွာသုံးပါ ။
curl_multi_close () နှင့်သယံဇာတများကိုမပိတ်မီသင်ဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီမှသင်လိုအပ်သောသတင်းအချက်အလက်အားလုံးကိုထုတ်ယူထားကြောင်းသေချာအောင်လုပ်ပါ။ စနစ်တကျ ပါဝင်မှု , အမှား နှင့် http_code များ စုဆောင်းခြင်းဖြင့်ကြီးမားသောတစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထိရောက်စွာစီမံပြီးနောက်ဆက်တွဲစီးပွားရေးအပြောင်းအလဲအတွက်ခိုင်မာသောအုတ်မြစ်ချနိုင်သည်။
သင်ဤကုဒ်ကိုလွယ်ကူစွာပြန်လည်သုံးသပ်ရန်ယေဘုယျ function တစ်ခုထဲသို့ထည့်ရန်လိုအပ်ပါသလား။