လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_exec နှင့်အတူပူးပေါင်းဆောင်ရွက်ရန် Curl_Multi_exec နှင့်ပူးပေါင်းရန်မည်သို့အသုံးပြုရမည်နည်း။

curl_multi_exec နှင့်အတူပူးပေါင်းဆောင်ရွက်ရန် Curl_Multi_exec နှင့်ပူးပေါင်းရန်မည်သို့အသုံးပြုရမည်နည်း။

gitbox 2025-05-26

HTTP တောင်းဆိုမှုများစွာကိုပြုလုပ်သောအခါ PHP မှပေးသော curl_multi_exec သည် PHP မှပေးသော curlti_exec သည်တစ်ပြိုင်တည်းတောင်းဆိုမှုများကိုအကောင်အထည်ဖော်ရန်အတွက်ဘုံကိရိယာတစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်၎င်းကိုအသုံးပြုသည့်အခါအဓိကအသေးစိတ်အချက်အလက်များကိုလျစ်လျူရှုထားသည် - curl_close ၏မှန်ကန်သောအချိန်ကိုက်။ အကယ်. မလျော်ကန်စွာအသုံးပြုပါက၎င်းသည်အရင်းအမြစ်ယိုစိမ့်မှုသို့ ဦး တည်သွားရုံသာမကမပြည့်စုံသောတောင်းဆိုမှုများနှင့်ပုံမှန်မဟုတ်သောတုံ့ပြန်မှုများကဲ့သို့သောပြ problems နာများကိုလည်းဖြစ်ပေါ်စေနိုင်သည်။ ဤဆောင်းပါးသည် curl_close function ကိုမှန်ကန်စွာမည်သို့မှန်ကန်စွာအသုံးပြုနိုင်မည်ကိုအသေးစိတ်ရှင်းပြပြီးထိရောက်သောတည်ငြိမ်မှုနှင့်တည်ငြိမ်သောအစုအဝေးကိုအောင်မြင်ရန် curl_multi_exec နှင့်ပူးပေါင်းဆောင်ရွက်ရန်။

1 ။ နိဒါန်းကို curl_multi_exec သို့မိတ်ဆက်

curl_multi_exec သည် Php Curl extension မှပေးသောလုပ်ငန်းဆောင်တာများထဲမှတစ်ခုဖြစ်သည်။ ရိုးရာအမှတ်စဉ်တောင်းဆိုမှုများနှင့်နှိုင်းယှဉ်လျှင်၎င်းသည်အပြောင်းအလဲအတွက်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။

2 ။ သာမန်မှားယွင်းသောအသုံးပြုမှုနည်းလမ်းများ

developer အတော်များများသည် curl_close ($ ch) ကို ချက်ချင်းခေါ်ဆိုခြင်းမမှန်ကန်ပါ။ curl_mamulti_exec ကိုအသုံးပြုပြီး တစ်ပြိုင်နက်တည်းမော်ဒယ်တွင် -

 $mh = curl_multi_init();
$chs = [];

foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $chs[] = $ch;

    // လမ်းပြောင်းပြန်:ဒီကိုမခေါ်ပါနဲ့ curl_close
    // curl_close($ch);
}

3 ။ မှန်ကန်သောအဆင့်ကိုအသုံးပြုပါ

curl_multi_exec နှင့် curl_close ကို မှန်ကန်စွာအသုံးပြုခြင်း၏ဖြစ်စဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

  1. Multi လက်ကိုင်ကိုစတင်ရန်,

  2. မျိုးစုံဆံပင်ကောက်ကောက်လက်ကိုင်များကိုဖန်တီးပြီးရွေးချယ်စရာများကိုသတ်မှတ်ပါ။

  3. အဆိုပါ multi ကိုင်တွယ်ရန်ဆံပင်ကောက်ကောက်ထည့်ပါ;

  4. တောင်းဆိုမှုကို execute;

  5. ကိုင်တွယ်သူများကိုတ ဦး တည်းဖြင့်ဖယ်ရှားပြီး curl_close ဟုခေါ်ပါ။

  6. Multi လက်ကိုင်ကိုပိတ်ပါ။

ဤတွင်ပြည့်စုံပြီးမှန်ကန်သောဥပမာတစ်ခုဖြစ်သည်။

 $urls = [
    'https://gitbox.net/api/endpoint1',
    'https://gitbox.net/api/endpoint2',
    'https://gitbox.net/api/endpoint3',
];

$mh = curl_multi_init();
$handles = [];
$responses = [];

// 1. တစ်ခုချင်းစီကိုဖန်တီးနှင့် configure curl လက်ကိုင်
foreach ($urls as $i => $url) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
    ]);
    curl_multi_add_handle($mh, $ch);
    $handles[$i] = $ch;
}

// 2. တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများဖျော်ဖြေ
$running = null;
do {
    $status = curl_multi_exec($mh, $running);
    if ($running) {
        curl_multi_select($mh);
    }
} while ($running && $status == CURLM_OK);

// 3. တုန့်ပြန်မှုကိုဖတ်ပြီးအရင်းအမြစ်များကိုသန့်ရှင်းပါ
foreach ($handles as $i => $ch) {
    $responses[$i] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch); // အချိန်မှန်:တည်နေ handle ဖယ်ရှားခံရပြီးနောက်အနီးကပ်
}

curl_multi_close($mh);

// မလုပ်မနေရမဟုတ်သော:ထုတ်ယူခြင်းအချက်အလက်များကိုထုတ်ယူခြင်း
foreach ($responses as $i => $body) {
    echo "Response #$i: " . substr($body, 0, 100) . PHP_EOL;
}

4 ။ သတိပြုရန်အဓိကအချက်များ

  • ကြိုတင်ပြင်ဆင်မှုကို curl လက်ကိုင်ကိုမပိတ်ပါနှင့် ။ တောင်းဆိုမှုကိုကွပ်မျက်ခံရပြီး curl_close မခေါ်မီ Multi Multi Multi Multi Multi Multi Multi Multi Multi မှဖယ်ရှားပစ်ရန်သေချာစေရမည်။

  • curl_multi_select သည်စွမ်းဆောင်ရည်တိုးတက်စေရန်အတွက်သော့ချက်ဖြစ်ပြီး CPU idling ကိုတားဆီးနိုင်သည်။

  • လက်ကိုင်အားလုံးကိုအဆုံးတွင်စနစ်တကျဖြည့ စွက် သင့်သည်။

  • အသုံးပြုသော URL domain name ကိုပုံသေသတ်မှတ်ထားပါက၎င်းကို Unified configuration သို့မဟုတ် variable အစားထိုးမှတဆင့် Centrally စီမံနိုင်သည်။

 $domain = 'gitbox.net';
$url = "https://{$domain}/api/endpoint";

V. နိဂုံးချုပ်

Curl_multi_exec နှင့် curl_clos ၏အသုံးပြုမှုအချိန်ကိုမှန်ကန်စွာစီမံခြင်းဖြင့် PHP Batch HTTP တောင်းဆိုမှုအပြောင်းအလဲအတွက်စွမ်းဆောင်ရည်နှင့်တည်ငြိမ်မှုကိုများစွာတိုးတက်စေနိုင်သည်။ ဤလုပ်ငန်းစဉ်သည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းသောအချက်အလက်ကောက်ယူခြင်း, API စုစည်းခြင်းနှင့်အခြား application အခြေအနေများအတွက်သင့်တော်သည်။ PHP developer တိုင်းသည်ကျွမ်းကျင်ရန်ထိုက်တန်သောကျွမ်းကျင်မှုတစ်ခုဖြစ်သည်။