လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_multi_select () နှင့် curl_upkeep () connlime ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်

curl_multi_multi_select () နှင့် curl_upkeep () connlime ကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်

M66 2025-06-06

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

1 ။ curl_upkeep () နှင့် curl_multi_select () ?

  • curl_upkeep () - ဤလုပ်ဆောင်ချက်သည်အဓိကအားဖြင့် curl connection များကိုစီမံရန်အဓိကအားဖြင့်အသုံးပြုသည်။

  • curl_multi_select () - ဒီ function ကို curl_multi_exec () နှင့်အသုံးပြုသည်။ ၎င်းသည် multitasking curl တောင်းဆိုမှုများ၏ကွပ်မျက်မှုများကိုပိုမိုကောင်းမွန်စေရန်ကူညီနိုင်သည့် curlti_exec () ဖြင့်အသုံးပြုသည်။ ၎င်း၏ function ကိုအဆင်သင့်ဖြစ်ရန်အနည်းဆုံးဆံပင်ကောက်ကောက်လက်ကိုင်ကိုအဆင်သင့်ဖြစ်ရန်စောင့်ဆိုင်းရန်ဖြစ်သည်။

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

2 ။ အခြေခံကောက်ယူ multitasking

Curl_upkeep () နှင့် curl_multi_multi_selection ကို မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ခြင်းမပြုမီ, အောက်ပါကုဒ်သည် curlfulti_init () နှင့် curl_multi_exec () curl_multi_exec () ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည်။

 // မျိုးစုံကိုအစပြုcURLလက်ကိုင်
$mh = curl_multi_init();
$handles = [];

$urls = [
    'https://m66.net/api/data1',
    'https://m66.net/api/data2',
    'https://m66.net/api/data3'
];

// တောင်းဆိုမှုတစ်ခုစီအတွက်တစ်ခုဖန်တီးပါcURLလက်ကိုင်
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// Multitasking တောင်းဆိုမှုများကိုလုပ်ဆောင်ပါ
do {
    $status = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh); // တက်ကြွစွာတောင်းဆိုမှုရှိသည်အထိပိတ်ပင်တားဆီးမှု
    }
} while ($active);

// ရလဒ်များကိုလုပ်ပါ
foreach ($handles as $ch) {
    $response = curl_multi_getcontent($ch);
    echo $response;
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

curl_multi_close($mh);

curl_multi_exec () မှတစ်ဆင့် Multitasking တောင်းဆိုမှုများကို curl_multi_exec () curl_multi_select () ဟုခေါ်သော curl_multi_select () curl_mamulti_select () ကိုခေါ်ယူရန်မလိုအပ်သော CPU အရင်းအမြစ်အသုံးပြုမှုကိုရှောင်ရှားရန်။

3 ။ curl_upkeep () ဆက်သွယ်မှုကိုအကောင်အထည်ဖော်ရန် Curl_upkeep () ကိုသုံးပါ

မကြာခဏဆိုသလို connection များမကြာခဏတည်ထောင်ခြင်းနှင့်ဖျက်ဆီးခြင်းကိုရှောင်ရှားနိုင်ရန်အတွက် curl_upkeep () function ကို ဖြတ်. ဆက်သွယ်မှုမြှောက်စုံပိုးကိုအကောင်အထည်ဖော်နိုင်သည်။ PHP သည် curl_upkeep () function ကိုတိုက်ရိုက်မပေးသော်လည်းအလားတူလုပ်ဆောင်မှုများကိုရရှိရန်ကျွန်ုပ်တို့သည် curl_multi_ * function ကိုသုံးနိုင်သည်။ အထူးသဖြင့်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှုကိုပြန်လည်တောင်းခံသည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်ဖြည့်ဆည်းပေးမည့်အစားဤဆက်သွယ်မှုများကိုစီမံရန်အမြဲတမ်းဆက်သွယ်မှုရေကူးကန်ကိုအသုံးပြုသည်။

အကောင်အထည်ဖော်မှုအဆင့်များ:

  1. Connection Pool Innolitanation : ငါတို့ပထမ ဦး ဆုံးဆံပင်ကောက်ကောက်ရေကန်တစ်ခုဖန်တီးပြီးတောင်းဆိုမှုတစ်ခုစီအတွက်ဆက်သွယ်မှုအသစ်ကိုအစပြုမည့်အစားရေကန်ထဲရှိဆက်သွယ်မှုများကိုပြန်လည်အသုံးပြုလိမ့်မည်။

  2. ဆက်သွယ်မှုခွေပိုးမွှားများ - Multitasking တောင်းဆိုမှုတောင်းဆိုစဉ်အတွင်းဆက်သွယ်မှုရေကူးကန်ရှိဆက်သွယ်မှုကိုစစ်ဆေးနိုင်သည်။ အခမဲ့ဆက်သွယ်မှုများရှိပါကကျွန်ုပ်တို့ပြန်လည်အသုံးပြုနိုင်သည်။

နမူနာကုဒ်:

 // မြဲ connection pool ဖန်တီးပါ
$mh = curl_multi_init();
$handles = [];
$connectionPool = [];

// တောင်းဆိုခဲ့သည်URLs
$urls = [
    'https://m66.net/api/data1',
    'https://m66.net/api/data2',
    'https://m66.net/api/data3'
];

// ဖြစ်ပေါ်လာခြင်းcURLလက်ကိုင်并存储
foreach ($urls as $url) {
    if (empty($connectionPool[$url])) {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $connectionPool[$url] = $ch; // ဆက်သွယ်မှုရေကန်ထဲသို့ဆက်သွယ်မှုအသစ်များကိုသိမ်းဆည်းပါ
    } else {
        $ch = $connectionPool[$url]; // ဆက်သွယ်မှုရေကန်အတွင်းရှိရှိပြီးသားဆက်သွယ်မှုကိုသုံးပါ
    }

    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// Multitasking တောင်းဆိုမှုများကိုလုပ်ဆောင်ပါ
do {
    $status = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh); // တက်ကြွစွာတောင်းဆိုမှုရှိသည်အထိပိတ်ပင်တားဆီးမှု
    }
} while ($active);

// ရလဒ်များကိုလုပ်ပါ
foreach ($handles as $ch) {
    $response = curl_multi_getcontent($ch);
    echo $response;
    curl_multi_remove_handle($mh, $ch);
    // ဤတွင်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှုကိုမပိတ်ပါ,connection pool အတွက် attrimaling ကိုမြှင့်တင်ပါ
}

curl_multi_close($mh);

အထက်ဖော်ပြပါကုဒ်များတွင်ကျွန်ုပ်တို့သည်ရိုးရှင်းသော connection pool connectionpool ကို ဖန်တီးပြီး multitasking တောင်းဆိုမှုများကိုကွပ်မျက်ခံရသည့်အခါရေကန်အတွင်းရှိဆက်သွယ်မှုများနှင့်ဆက်သွယ်မှုများနှင့်ချိတ်ဆက်မှုနှင့်ဆက်စပ်မှုရှိသည်။ ၎င်းသည်အထူးသဖြင့်တောင်းဆိုမှုများစွာသည်တူညီသောဒိုမိန်းအမည်ကိုညွှန်ပြသည့်အခါဆက်သွယ်မှုထိရောက်မှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။

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

Curl_upkeep (connection pool စီမံခန့်ခွဲမှု) နှင့် curl_multi_select () curl_multi_select () curl_multi_select () (တက်ကြွတောင်းဆိုမှုများကိုပိတ်ဆို့ခြင်းနှင့်စောင့်ဆိုင်းခြင်း) ကိုပေါင်းစပ်ခြင်းဖြင့်ကျွန်ုပ်တို့သည်စနစ်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် PHP တွင် Multitasking တောင်းဆိုမှုများကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။ ဆက်သွယ်မှုကိုရေကူးကန်သည်မကြာခဏတီထွင်မှုနှင့်ပျက်စီးခြင်းကိုထိရောက်စွာလျော့နည်းစေပြီး system resources များကို Semility ReaseStains သို့ 0 င်ရောက်ခြင်းကိုထိထိရောက်ရောက်လျှော့ချသည်။

ဤနည်းအားဖြင့် HTTP တောင်းဆိုမှုအမြောက်အများကိုကိုင်တွယ်ရန်, ပရိုဂရမ်တုန့်ပြန်မှုမြန်နှုန်းကိုတိုးတက်အောင်လုပ်ခြင်း,