လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_info_read ရှိ curl တောင်းဆိုမှုများစွာ၏ပြန်လာအချက်အလက်များကိုမည်သို့ထိရောက်စွာစီမံခန့်ခွဲနိုင်မည်နည်း။

curl_multi_info_read ရှိ curl တောင်းဆိုမှုများစွာ၏ပြန်လာအချက်အလက်များကိုမည်သို့ထိရောက်စွာစီမံခန့်ခွဲနိုင်မည်နည်း။

gitbox 2025-06-19

PHP တွင် curl_multi_ * လုပ်ဆောင်ချက်သည် http တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းပေးပို့ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ အထူးသဖြင့်, curl_multi_info_Read လုပ်ဆောင်ချက်သည် curl တောင်းဆိုမှုများကိုစတင်သောအခါ၎င်းတို့ကိုပြန်လည်စီမံခန့်ခွဲရန်နှင့်လုပ်ဆောင်မှုများကိုကူညီသည်။ ဤဆောင်းပါးသည်ထိရောက်စွာနှင့်တိကျမှန်ကန်မှုကိုသေချာစေရန် curl_multi_info_read ကိုအသုံးပြုသောအခါ curl quesh တောင်းဆိုမှုများကိုမည်သို့ပြန်လည်စီမံခန့်ခွဲရမည်ကိုအသေးစိတ်လေ့လာသုံးသပ်ရမည်။

1 ။ နောက်ခံနိဒါန်း

PHP တွင် curl extension သည် HTTP တောင်းဆိုမှုများအတွက်ကြွယ်ဝသော apis ကိုပေးသည်။ သင်ဟာ http တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်သည့်အခါ curl_mamulti_ * function ကိုများသောအားဖြင့်ဤတောင်းဆိုမှုများကိုအပြိုင်တွင်လုပ်ဆောင်ရန်အသုံးပြုလေ့ရှိသည်။ curl_multi_exec ကို တောင်းဆိုမှုများစွာကို execute လုပ်ရန်အသုံးပြုသည်

2 ။ curl_multi_ * function ကိုဘယ်လိုသုံးရမလဲ။

ပထမ ဦး စွာ curl_multi_init နှင့်အတူ multi-curl လက်ကိုင်တစ်ခုနှင့်ပေါင်းစပ်ပြီး, တောင်းဆိုမှုတစ်ခုစီအတွက်သီးခြားဆံပင်ကောက်ကောက်ကိုဖန်တီးပြီး Multi-curl လက်ကိုင်သို့ထည့်ပါ။ ဤတွင်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 <?php
// တစ် ဦး ထက်ပိုကန ဦး cURL လက်ကိုင်
$multiCurl = curl_multi_init();

// မျိုးစုံသီးခြားဖန်တီးပါ cURL မေးမြန်းလက်ကိုင်
$curlHandles = [];
$urls = ['https://gitbox.net/api/data1', 'https://gitbox.net/api/data2', 'https://gitbox.net/api/data3'];

foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($multiCurl, $ch);
    $curlHandles[] = $ch;
}

// တောင်းဆိုမှုကို execute
do {
    $status = curl_multi_exec($multiCurl, $active);
    if ($active) {
        // ဖြစ်ရပ်ပြီးစီးရန်စောင့်ဆိုင်း
        curl_multi_select($multiCurl);
    }
} while ($active && $status == CURLM_OK);

// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်များကို process
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    // ပြန်လည်ပြုပြင်ခြင်းအချက်အလက်များ
    echo $response . PHP_EOL;
    // 关闭လက်ကိုင်
    curl_multi_remove_handle($multiCurl, $ch);
    curl_close($ch);
}

// အများအပြားပိတ်ပါ cURL လက်ကိုင်
curl_multi_close($multiCurl);
?>

အထက်ပါကုဒ်များတွင် curl_multi_add_handle မှတဆင့် Multi Curl လက်ကိုင်လက်ကိုင် လက်ကိုင် ကိုကိုင်တွယ်ရန် curl တောင်းဆိုမှုတစ်ခုစီကိုကျွန်ုပ်တို့ထည့်ပြီး curl_mamulti_exec မှတစ်ဆင့်ဤတောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ပါ။

3 ။ Curl_multi_info_read ကို သုံးပါ

curl_multi_info_Read function သည် multi-curl လက်ကိုင်မှတောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လာသောသတင်းအချက်အလက်များကိုရရှိရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်မှုမှတစ်ဆင့်တောင်းဆိုမှုဆိုင်ရာအချက်အလက်များနှင့်တောင်းဆိုမှု၏ပြန်လာသည့်အကြောင်းအရာများကိုကျွန်ုပ်တို့ကွပ်မျက်မှုအခြေအနေကိုရယူနိုင်ပါသည်။ တောင်းဆိုမှုများအတွက်ပြန်ပို့ခြင်းနှင့်လုပ်ဆောင်ခြင်းကိုစီမံရန်နှင့်လုပ်ဆောင်ရန်၎င်းကိုမည်သို့အသုံးပြုရမည်နည်း။

 <?php
// များစွာသောအစကွပ်မွေးခြင်းနှင့်ကွပ်မျက်ခံရကြောင်းယူဆ cURL မေးမြန်း(အပေါ်ကကြည့်ပါ)

// 获取每个မေးမြန်း的执行信息
while ($done = curl_multi_info_read($multiCurl)) {
    // 获取မေးမြန်း状态
    $status = $done['result'];
    $ch = $done['handle'];

    if ($status === CURLE_OK) {
        // မေးမြန်း成功
        $response = curl_multi_getcontent($ch);
        echo "မေးမြန်း成功,ဒေတာကိုပြန်သွားပါ: " . $response . PHP_EOL;
    } else {
        // မေးမြန်း失败
        echo "မေးမြန်း失败,အမှားသတင်းစကား:" . curl_error($ch) . PHP_EOL;
    }

    // 移除已完成的လက်ကိုင်
    curl_multi_remove_handle($multiCurl, $ch);
    curl_close($ch);
}

// အများအပြားပိတ်ပါ cURL လက်ကိုင်
curl_multi_close($multiCurl);
?>

ဒီဥပမာမှာတောင်းဆိုမှုတစ်ခုစီအတွက်ပြန်လာတဲ့အချက်အလက်တွေရဖို့ curl_multi_info_read ကို သုံးတယ်။ အကယ်. တောင်းဆိုမှုသည်အောင်မြင်ပါကကျွန်ုပ်တို့သည် Returned data ကို curl_mamulti_getcontent မှတဆင့်ရရှိမည်ဖြစ်သည်။ ဒီလိုမှမဟုတ်ရင်အမှားအယွင်းကိုပုံနှိပ်ထုတ်ဝေမယ်။

4 ။ တောင်းဆိုထားသောပြန်လာအချက်အလက်များကိုမည်သို့ကိုင်တွယ်ရမည်နည်း။

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

  1. ဒေတာပုံစံများစည်းလုံးညီညွတ်ရေး - တောင်းဆိုမှုများအားလုံးမှပြန်လာသောအချက်အလက်များသည်တသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန်, နောက်ပိုင်းတွင်လုပ်ငန်းစဉ်ကိုပိုမိုလွယ်ကူစေသည်။ ဥပမာအားဖြင့်, သင်သည်ပြန်လာသောအချက်အလက်များကို JSON format ဖြင့်ပြောင်းလဲရန်စဉ်းစားနိုင်သည်။

  2. အမှားကိုင်တွယ်ခြင်း - တောင်းဆိုမှုတစ်ခုစီအတွက်တောင်းဆိုမှုကိုပျက်ကွက်မှုကိုကိုင်တွယ်ရမည်။ curl_multi_info_read သည် Debug ကိုရှာဖွေရန်နှင့်ခွဲခြမ်းစိတ်ဖြာရန်တောင်းဆိုထားသောအမှားအချက်အလက်များကိုရယူနိုင်သည်။

  3. ပြတ်တောင်းပြတ်တောင်းဒေတာလုပ်ဆောင်မှု - အချို့ဖြစ်ရပ်များတွင်ပြန်လည်နေရာချထားသည့်အချက်အလက်များကိုဒေတာဘေ့စ်ထဲထည့်ခြင်းသို့မဟုတ်အခြား API ခေါ်ဆိုမှုများပြုလုပ်ရန်လိုသည်။ ဤကိစ္စတွင်, Queue စနစ်ကိုအသုံးပြုနိုင်သည်သို့မဟုတ်ဒေတာများကို cache တွင်သိမ်းဆည်းထားပြီးနောက်မှလုပ်ဆောင်နိုင်သည်။

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

 <?php
// မျိုးစုံအကောင်အထည်များဖျော်ဖြေခဲ့ကြသည်ယူဆ cURL မေးမြန်း并获取了ဒေတာကိုပြန်သွားပါ

while ($done = curl_multi_info_read($multiCurl)) {
    $ch = $done['handle'];
    $status = $done['result'];

    // 检查မေးမြန်း是否成功
    if ($status === CURLE_OK) {
        $response = curl_multi_getcontent($ch);
        // ပြန်လာကြောင်းယူဆ JSON အချက်များ
        $data = json_decode($response, true);

        if ($data === null) {
            echo "သုံးသပ်ကြည့်ရှုခြင်း JSON အချက်များ失败:" . json_last_error_msg() . PHP_EOL;
        } else {
            // 处理အချက်များ
            echo "成功获取အချက်များ:" . print_r($data, true) . PHP_EOL;
        }
    } else {
        // မေးမြန်း失败,输出အမှားသတင်းစကား
        echo "မေးမြန်း失败,အမှားသတင်းစကား:" . curl_error($ch) . PHP_EOL;
    }

    // 移除并关闭လက်ကိုင်
    curl_multi_remove_handle($multiCurl, $ch);
    curl_close($ch);
}

curl_multi_close($multiCurl);
?>

ဤကုဒ်တွင်ကျွန်ုပ်တို့သည် JSONS_Decode မှတဆင့်ပြန်လာသော JSON အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာအမှားကိုကိုင်တွယ်သည်။

5 ။ စွမ်းဆောင်ရည်အကောင်းဆုံးအကြံပြုချက်များ

curl_multi_ * function သည်အပြိုင်တောင်းဆိုမှုများကိုအပြိုင်တောင်းဆိုမှုများကိုအပြိုင်တောင်းဆိုမှုများကိုခွင့်ပြုသော်လည်း,

  • အသုတ်တောင်းဆိုမှုများ - တောင်းဆိုမှုများအားလုံးကိုတစ်ပြိုင်နက်တည်းပေးပို့မည့်အစားတောင်းဆိုမှုများအားလုံးကိုတစ်ပြိုင်နက်တည်းပို့မည့်အစားတောင်းဆိုမှုများကိုပေးပို့ပါ။

  • အချိန်ကုန်ခံချိန်ညှိခြင်း - အခြားတောင်းဆိုမှုများကိုပိတ်ဆို့ခြင်းနှင့်ထိခိုက်နစ်နာမှုကိုထိခိုက်စေခြင်းမှတားဆီးရန်သင့်တော်သောအချိန်ကန့်သတ်ချက်များကိုသတ်မှတ်ပါ။ တောင်းဆိုမှုအချိန်ကိုသတ်မှတ်ရန် curlopt_timeout သို့မဟုတ် curlopt_timeout_ms ကို သုံးပါ။

  • connection pooling : currl ၏ဆက်သွယ်မှုမြှောက်သတ်ယန္တရားကိုအသုံးပြုခြင်း, ကထပ်ခါတလဲလဲခိုင်လုံသောဆက်သွယ်မှုများ၏ overhead ကိုလျော့နည်းစေသည်။ curlopt_forbid_use and curlopt_fresh_connect ကို setting ဖြင့် connection မြှောက်မကိန်းကိုပိုကောင်းအောင်လုပ်နိုင်ပါတယ်။

6 ။ အကျဉ်းချုပ်

curl_multi_info_Read နှင့် curl_multi_ * လုပ်ဆောင်ချက်များနှင့်အတူ PHP သည် HTTP တောင်းဆိုမှုများကိုအလွန်ထိထိရောက်ရောက်အသုံးချနိုင်သည်။ လက်တွေ့ကျသောအပလီကေးရှင်းများအနေဖြင့်ကျွန်ုပ်တို့သည်တောင်းဆိုမှုများကိုအပြိုင်အရေးယူခြင်းကိုအာရုံစိုက်သင့်သည်။

ဤဆောင်းပါးသည် PHP တွင် Curlulti_info_Read ကို မည်သို့အသုံးပြုရမည်ကိုပိုမိုနားလည်ရန်မျှော်လင့်ပါသည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    cURL