လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_close ဟုခေါ်ဆိုသည့်အခါကွဲပြားခြားနားသောပြန်လာသောတန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

curl_multi_close ဟုခေါ်ဆိုသည့်အခါကွဲပြားခြားနားသောပြန်လာသောတန်ဖိုးများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

gitbox 2025-05-12

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 Multi ကိုပိတ်ရန်ဖြစ်သည်။

 curl_multi_close($multiHandle);

နမူနာ output ကိုဖွဲ့စည်းပုံ

အထက်ဖော်ပြပါပြုပြင်ထုတ်လုပ်မှုမှတစ်ဆင့်ကျွန်ုပ်တို့သည်နောက်ဆုံးတွင်စနစ်တကျ Reses Array ကိုနောက်ဆုံးတွင်ရရှိသည်။

 [
    [
        'content' => '{...}', // JSONသို့မဟုတ်HTMLစောင့်
        'error' => '',        // အဘယ်သူမျှမအမှားရှိလျှင်
        'http_code' => 200,
    ],
    [
        'content' => '',
        'error' => 'Could not resolve host: gitbox.net',
        'http_code' => 0,
    ],
    ...
]

ဤနည်းအားဖြင့် Multi Multi Multi Multi ကိုမပိတ်မီ, တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုတန်ဖိုးများကိုပုံစံဖြင့်စုဆောင်းနိုင်သည်။ ၎င်းသည်သစ်ထုတ်လုပ်ခြင်း, အမှားခွဲခြမ်းစိတ်ဖြာခြင်း,

အကောင်းဆုံးအလေ့အကျင့်အကြံပြုချက်များ

  1. - HTTP 5xx Retry, HTTP 4xx Logging သတိပေးချက်များအတွက်တောင်းဆိုမှုတစ်ခုစီအတွက် အပြောင်းအလဲနဲ့ မူဝါဒများသတ်မှတ်ခြင်း။

  2. Data format ကိုကြိုတင်အတည်ပြုခြင်း - JSON_Decode () ကို အသုံးပြုရန်ကြိုးစားပါ။

  3. Response Mapping Identity : အကယ်. သင်ရာနှင့်ချီသောတောင်းဆိုမှုများကိုသင်လုပ်ဆောင်လိုပါကလက်ကိုင်တစ်ခုစီအတွက်လက်ကိုင်တစ်ခုစီအတွက်စိတ်ကြိုက်လက္ခဏာများ (url သို့မဟုတ် id) ကိုသတ်မှတ်ရန်အကြံပြုသည်။

  4. Curl_multi_selecte () ကိုကျိုးကြောင်းဆီလျော်စွာသုံးပါ

အကျဉ်းချုပ်

curl_multi_close () နှင့်သယံဇာတများကိုမပိတ်မီသင်ဆံပင်ကောက်ကောက်လက်ကိုင်တစ်ခုစီမှသင်လိုအပ်သောသတင်းအချက်အလက်အားလုံးကိုထုတ်ယူထားကြောင်းသေချာအောင်လုပ်ပါ။ စနစ်တကျ ပါဝင်မှု , အမှား နှင့် http_code များ စုဆောင်းခြင်းဖြင့်ကြီးမားသောတစ်ပြိုင်နက်တည်းကတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထိရောက်စွာစီမံပြီးနောက်ဆက်တွဲစီးပွားရေးအပြောင်းအလဲအတွက်ခိုင်မာသောအုတ်မြစ်ချနိုင်သည်။

သင်ဤကုဒ်ကိုလွယ်ကူစွာပြန်လည်သုံးသပ်ရန်ယေဘုယျ function တစ်ခုထဲသို့ထည့်ရန်လိုအပ်ပါသလား။