လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi ၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် curl_upkeep () ကိုသုံးပါ

curl_multi ၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် curl_upkeep () ကိုသုံးပါ

M66 2025-06-05

PHP တွင် curl_mamulti သည်တစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများကိုမကြာခဏလုပ်ဆောင်ရန်အသုံးပြုသောအလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ တောင်းဆိုမှုတစ်ခုစီအတွက်သီးခြားဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရန်မလိုဘဲကောက်ကောက်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းပြုလုပ်ရန်ခွင့်ပြုထားသည်, ကွန်ယက်တောင်းဆိုမှုများ၏ထိရောက်မှုကိုသိသိသာသာတိုးတက်စေသည်။ ယေဘုယျအားဖြင့် curl_multi သည်ပြင်ပ API ခေါ်ဆိုမှုမျိုးစုံနှင့်အချက်အလက်များကိုရယူခြင်းကိုရယူရန်လိုအပ်သည့်အခြေအနေမျိုးတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ သို့သော်ဤတောင်းဆိုမှုများ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်မည်သို့တောင်းဆိုမှုများစွာပြုလုပ်သောအခါ developer များအတွက်ဘုံစိန်ခေါ်မှုတစ်ခုဖြစ်သည်။

ဤဆောင်းပါးသည် curl_upkeep () function ကိုအသုံးပြုခြင်းအားဖြင့် curl_multi တောင်းဆိုမှုများ၏စွမ်းဆောင်ရည်ကိုမည်သို့တိုးတက်အောင်လုပ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

curl_multi နှင့် curl_upkeep () ဘာတွေလဲ။

Curl_multi သည်သင်တောင်းဆိုမှုတစ်ခုချင်းစီကိုသီးခြားစီဖြည့်စွက်ရန်မစောင့်ဘဲ HTTP တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်ပေးရန်ခွင့်ပြုသည့် curl library မှပေးသောအင်္ဂါရပ်မှပေးသောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ developer များသည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကိုအကောင်အထည်ဖော်ရန်နှင့်ပရိုဂရမ်ကွပ်မျက်မှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ကူညီနိုင်သည်။

curl_upkeep () သည် Multi- တောင်းဆိုမှုပြုလုပ်နေစဉ်အရင်းအမြစ်စီမံခန့်ခွဲမှုများကိုပိုမိုကောင်းမွန်စေရန်အသုံးပြုသောစိတ်ကြိုက် PHP function ကိုအသုံးပြုသည်။ တောင်းဆိုမှုကိုကွပ်မျက်မှုတွင်ဆာဗာအရင်းအမြစ်များကိုရေရှည်နေထိုင်မှုကိုရှောင်ရှားနိုင်ရန်အတွက်စနစ်တည်ငြိမ်မှုကိုထိန်းသိမ်းရန်ဆံပင်ကောက်ကောက်ကိုပုံမှန်သန့်ရှင်းခြင်းနှင့်ပြန်လည်အသုံးပြုခြင်းတို့ကိုပုံမှန်သန့်ရှင်းခြင်းနှင့်ပြန်လည်အသုံးပြုနိုင်သည်။

curl_mamulti ကိုသုံးပြီးအခြေခံအဆင့်များ

ပထမ ဦး စွာ PHP ပတ်ဝန်းကျင်တွင် curl extension ကိုဖွင့်ထားကြောင်းသေချာပါစေ။ ထို့နောက် curl_mamulti မှတဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုကျွန်ုပ်တို့ပြသပါမည်။

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

// ဖြစ်ပေါ်လာခြင်း单个 curl လက်ကိုင်
$handles = [];
for ($i = 0; $i < 3; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // ဒီမှာ URL ဆဲ m66.net
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // 将လက်ကိုင်加入 multi
    curl_multi_add_handle($multi_handle, $ch);
    $handles[] = $ch;
}

// တောင်းဆိုမှုကို execute
do {
    $multi_status = curl_multi_exec($multi_handle, $active);
} while ($active);

// ရုပ်သိမ်းခြင်း所有လက်ကိုင်
foreach ($handles as $ch) {
    curl_multi_remove_handle($multi_handle, $ch);
    curl_close($ch);
}

// ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multi_handle);

အထက်ပါကုဒ်သည် curl_mamulti သုံး. တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုသုံးခုကိုတစ်ပြိုင်နက်မည်သို့ပို့ရမည်ကိုပြသသည်။ URL ရှိဒိုမိန်းအမည်ကို M66.net ဖြင့်အစားထိုးထားကြောင်းသတိပြုပါ။

curl_upkeep () function ကိုမှတဆင့်စွမ်းဆောင်ရည်တိုးတက်အောင်ဘယ်လိုလုပ်ရမလဲ

Curl_multi တောင်းဆိုမှုများကိုတိုးတက်စေရန်အတွက်ကျွန်ုပ်တို့သည်ပုံမှန်သန့်ရှင်းရေးနှင့်အရင်းအမြစ်စီမံခန့်ခွဲမှုများကိုပြုလုပ်ရန်လိုအပ်သည်။ curl_upkeep () function ၏ function သည်တောင်းဆိုမှုဖြစ်စဉ်တွင်ကုသမှုခံယူနိုင်မှုကိုထိန်းသိမ်းရန်,

 function curl_upkeep($multi_handle, $handles) {
    // ပုံမှန်ကွပ်မျက်ခံရ,释放掉已经完成的လက်ကိုင်
    do {
        $status = curl_multi_exec($multi_handle, $active);
        
        // မည်သည့်တောင်းဆိုမှုကိုပြီးစီးခဲ့မရှိမရှိစစ်ဆေးပါ
        while ($info = curl_multi_info_read($multi_handle)) {
            if ($info['msg'] == CURLMSG_DONE) {
                $ch = $info['handle'];
                // တောင်းဆိုမှုကိုရလဒ်ရယူပါ
                $response = curl_multi_getcontent($ch);
                // ထုတ်ယူခြင်းအချက်အလက်များကိုထုတ်ယူခြင်း
                echo "တုံ့ပြန်မှုဒေတာ: " . $response;
                
                // ရုပ်သိမ်းခြင်း完成的လက်ကိုင်
                curl_multi_remove_handle($multi_handle, $ch);
                curl_close($ch);
            }
        }

        // တောင်းဆိုမှုများ၏သေဒဏ်များ၏ကြိမ်နှုန်းကိုထိန်းချုပ်ပါ,အလွန်အကျွံအသုံးပြုမှုကိုတားဆီး CPU
        usleep(10000); // 10 မီလီစက္ကန့်,အလွန်အမင်းမြင့်မားစွာရှောင်ကြဉ်ပါ CPU နေထိုင်ခြင်း
    } while ($active); // Runtime မှာတောင်းဆိုမှုတစ်ခုရှိနေသေးသည့်အခါ,ဆက်လုပ်ရန်ဆက်လက်
}

curl_upkeep () function သည်အချိန်မီတောင်းဆိုမှုကိုပြီးစီးခဲ့သည်ဖြစ်စေ, ကွပ်မျက်မှုလုပ်ငန်းစဉ်အတွင်းစနစ်ဝန်ထုပ်ဝန်ပိုးကိုသင့်လျော်သော USLEEP () မဲဆန္ဒနယ်များကိုမကြာခဏဆိုသလိုအလွန်အကျွံ CPU အသုံးပြုမှုကိုရှောင်ရှားရန်တောင်းဆိုသည်။

curl_multi နှင့်အတူ curl_upkeep () ပေါင်းစပ်

ယခုကျွန်ုပ်တို့သည် curl_uplet () function ကို curl_multi နှင့်တွဲဖက်လုပ်ဆောင်ခြင်းကိုအသုံးပြုသည်။

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

// ဖြစ်ပေါ်လာခြင်း单个 curl လက်ကိုင်
$handles = [];
for ($i = 0; $i < 5; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // အစားထိုးလိုက်ပါ m66.net ဒိုမိန်းအမည်
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // 将လက်ကိုင်加入 multi
    curl_multi_add_handle($multi_handle, $ch);
    $handles[] = $ch;
}

// တယ်လီဖုန်းဆက်ခြင်း upkeep ပုံမှန်သန့်ရှင်းရေးနှင့်လုပ်ဆောင်ချက်များကိုအရင်းအမြစ်စီမံခန့်ခွဲမှု
curl_upkeep($multi_handle, $handles);

// ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multi_handle);

ဤဥပမာတွင် curl_upkeep () function သည်ပြီးပြည့်စုံသောအရင်းအမြစ်များကိုဖြိုခွဲနေစဉ်အတွင်းတောင်းဆိုမှုများအားလုံးကိုချောချောမွေ့မွေ့ချောမွေ့စေရန်သေချာစေရန်တောင်းဆိုမှုတစ်ခုစီ၏အခြေအနေကိုပုံမှန်စစ်ဆေးသည်။

စွမ်းဆောင်ရည်တိုးတက်မှုအကျိုးသက်ရောက်မှု

Curl_upkeep () ကို အသုံးပြု. curl_multi တောင်းဆိုမှုများကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်, မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုလျှော့ချနိုင်သည်။ ထို့အပြင်ပြီးစီးခဲ့သောဆံပင်ကောက်ကောက်လက်ကိုင်များကိုပုံမှန်သန့်ရှင်းရေးပြုလုပ်ခြင်းဖြင့်ပရိုဂရမ်များသည်တောင်းဆိုမှုများနှင့်စနစ်အရင်းအမြစ်များကိုပိုမိုထိရောက်စွာစီမံနိုင်သည်။