လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Curlfulti_info_Read ကိုဘယ်လိုသုံးရမလဲ။

Curlfulti_info_Read ကိုဘယ်လိုသုံးရမလဲ။

M66 2025-06-15

ခေတ်သစ်ရှေ့တန်းတွင်ဖွံ့ဖြိုးတိုးတက်မှုတွင် JavaScript ၏ ကတိတော်သည် asynchronous တောင်းဆိုမှုများစွာ၏တစ်ပြိုင်နက်တည်းကွပ်မျက်မှုများကိုကိုင်တွယ်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်စတင်ရန်ခွင့်ပြုရန်, နောက်ဆက်တွဲယုတ္တိဗေဒကိုမပြုလုပ်မီတောင်းဆိုမှုများအားလုံးကိုစောင့်ဆိုင်းရန်စောင့်ဆိုင်းရန်ခွင့်ပြုသည်။ ဆာဗာဘေးထွက်ဘာသာစကားတစ်ခုအနေဖြင့် PHP တွင်တိုက်ရိုက်ကတိတော်ယန္တရားမရှိပါကကျွန်ုပ်တို့သည် curl_multi စီးရီးလုပ်ငန်းများမှတဆင့်အလားတူတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုအပြောင်းအလဲများကိုအကောင်အထည်ဖော်နိုင်သည်။ ဤဆောင်းပါးသည် curlulti_info_read ကို မည်သို့အသုံးပြုရမည်ကိုအဓိကထားကြောင်း ကတိကဝတ် နှင့်ဆင်တူသည်။


ဘာဖြစ်လို့ curl_mamulti ကိုသုံးတာလဲ။

သာမန် curl_exec သည်ထပ်တူပြုခြင်းကိုဆိုလိုသည်။ ဆိုလိုသည်မှာတောင်းဆိုမှုတစ်ခုစီသည်နောက်တစ်ဆင့်ကိုဆက်လက်မလုပ်ဆောင်မီရလဒ်ကိုပြန်လာရန်စောင့်ဆိုင်းရန်လိုအပ်သည်။ ပေးပို့ရန်တောင်းဆိုမှုများစွာရှိပါက sequential execution ထိရောက်မှုသည်အလွန်မတတ်နိုင်ပါ။ curl_multi သည် ကျွန်ုပ်တို့အားတစ်ချိန်တည်းတွင်တောင်းဆိုမှုများကိုစတင်ရန်ခွင့်ပြုသည်။ ထို့နောက်စွမ်းဆောင်ရည်တိုးတက်စေရန်တစ်ပြိုင်တည်းလုပ်ဆောင်သည်။


အခြေခံအတွေးအခေါ်များ

  1. မျိုးစုံလွတ်လပ်သော curl လက်ကိုင် ( curl_init ) ကိုဖန်တီးပါ။

  2. ဤလက်ကိုင်များကို curl_multi လက်ကိုင်သို့ထည့်ပါ။

  3. တောင်းဆိုမှုများအားလုံးကို execute လုပ်ရန် curl_multi_exec loop ကိုသုံးပါ။

  4. curl_mamulti_info_read မှတဆင့်ပြီးပြည့်စုံသောတောင်းဆိုချက်အချက်အလက်ကိုရယူပါ။

  5. ပြီးစီးရန်လက်ကိုင်ကိုပိတ်ပြီးရလဒ်ကိုသိမ်းဆည်းပါ။

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


Code Page

အောက်ဖော်ပြပါနမူနာကုဒ်သည် URLs မျိုးစုံကိုတစ်ပြိုင်နက်တည်းတောင်းဆိုခြင်းနှင့်တောင်းဆိုမှုများအားလုံးပြီးဆုံးပြီးနောက်တစ်ပုံစံတည်းကိုတူညီစွာလုပ်ဆောင်ရမည်ကိုပြသသည်။ ဥပမာရှိ URL domains များကို M66.net ဖြင့်အစားထိုးသည်။

 <?php
// တောင်းဆိုရန်URLစာရင်း
$urls = [
    'https://m66.net/api/user',
    'https://m66.net/api/order',
    'https://m66.net/api/product',
];

// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$mh = curl_multi_init();
$handles = [];

// ဖြစ်ပေါ်လာခြင်း所有မေးမြန်းလက်ကိုင်并加入 multi လက်ကိုင်
foreach ($urls as $key => $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // သင်၏လိုအပ်ချက်များနှင့်အညီချိန်ညှိရန်အချိန်ကုန်ခြင်းနှင့်အခြားရွေးချယ်စရာများကိုသတ်မှတ်ပါ
    curl_multi_add_handle($mh, $ch);
    $handles[$key] = $ch;
}

// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
    curl_multi_exec($mh, $running);
    // တက်ကြွစွာဆက်သွယ်မှုကိုစောင့်ဆိုင်း,ထိရောက်စွာလျှော့ချCPUအသုံးပြုမှုနှုန်း
    curl_multi_select($mh);
    
    // ပြီးပြည့်စုံသောတောင်းဆိုမှုကိုဖတ်ပါ
    while ($info = curl_multi_info_read($mh)) {
        if ($info['msg'] == CURLMSG_DONE) {
            // 找出အပြီးသတ်မေးမြန်း的လက်ကိုင်
            $finishedHandle = $info['handle'];
            // သက်ဆိုင်ရာတ ဦး တည်းကိုရှာပါ key
            $key = array_search($finishedHandle, $handles, true);
            
            // အကြောင်းအရာနှင့် status ကို codes တွေကိုရယူပါ
            $content = curl_multi_getcontent($finishedHandle);
            $httpCode = curl_getinfo($finishedHandle, CURLINFO_HTTP_CODE);
            
            echo "မေးမြန်း {$urls[$key]} အပြီးသတ်,HTTPအခြေအနေကုဒ်: {$httpCode}\n";
            echo "အကြောင်းအရာအရှည်: " . strlen($content) . " ဒရယ်\n\n";
            
            // 关闭并移除已经အပြီးသတ်的လက်ကိုင်
            curl_multi_remove_handle($mh, $finishedHandle);
            curl_close($finishedHandle);
            
            // 将对应လက်ကိုင်置空,အဆင်ပြေနောက်ဆက်တွဲတရားသဖြင့်စီရင်
            unset($handles[$key]);
        }
    }
} while ($running > 0);

curl_multi_close($mh);

echo "所有မေးမြန်း均已အပြီးသတ်。\n";

code parsing

  • curl_multi_init () သည် Multi-Yours တောင်းဆိုခြင်းအပြောင်းအလဲအတွက်လက်ကိုင်ကိုဖန်တီးသည်။

  • curl_init တစ်ခုချင်းစီသည်သီးခြားတောင်းဆိုမှုကိုဖန်တီးပေးပြီး configuration ပြီးနောက် Multi-cursetire ကိုပေါင်းထည့်သည်။

  • တောင်းဆိုမှုအားလုံးပြီးဆုံးသည်အထိဖုန်းခေါ်ဆိုရန်တောင်းဆိုရန်တောင်းဆိုမှုကို curl_multi_exec () နှင့် loop ကိုစတင်ပါ။

  • curl_multi_seselect () CPU အသုံးပြုမှုကိုကာကွယ်ရန် () ကိုသုံးပါ။

  • curl_multi_info_read () ကတိတော်၏ ပြန် မှုနှင့်ဆင်တူပြီးစီးသောတောင်းဆိုချက်အချက်အလက်များကိုပြန်ပို့သည်။

  • အရင်းအမြစ်များကိုဖြုန်းတီးခြင်းမှရှောင်ရှားရန်တောင်းဆိုမှုပြီးဆုံးသွားသောအခါ,

  • အထက်ပါဖြစ်စဉ်ကိုမှတစ်ဆင့်တောင်းဆိုမှုများအားလုံးသည်တစ်ပြိုင်တည်းနှင့်ပြီးစီးပြီးနောက်ပြီးစီးပြီးနောက်တစ်ပုံစံတည်းလုပ်ဆောင်ခြင်းနှင့် ပြီးဆုံးခြင်း နှင့်ဆင်တူသည်။


အကျဉ်းချုပ်

PHP တွင်ဇာတိကတိတော်စနစ်မရှိပေမယ့် curl_multi စီးရီး functions, အထူးသဖြင့် curl_mami_info_read ကို အသုံးပြု. တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုစီမံခန့်ခွဲမှုနှင့်ရလဒ်ပြုပြင်ခြင်းများကိုအပြည့်အဝအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းဖြင့် PHP scripts ၏စွမ်းဆောင်ရည်သည် Multi-interface ခေါ်ဆိုမှုများကိုအကောင်အထည်ဖော်သည့်အခါ PHP scripts ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စွာတိုးတက်စေနိုင်သည်။

ဤဥပမာသည် PHP တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုနားလည်ရန်ကူညီလိမ့်မည်ဟုမျှော်လင့်ပါသည်။