လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_exec နှင့် curl_multi_close သုံး. အကောင်းဆုံးအလေ့အကျင့်များ

curl_exec နှင့် curl_multi_close သုံး. အကောင်းဆုံးအလေ့အကျင့်များ

gitbox 2025-05-29

ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည် http တောင်းဆိုမှုများကိုဆာဗာများသို့မဟုတ် APIs မျိုးစုံသို့စတင်ရန်လိုအပ်သည်။ အကယ်. သင်သည်ရိုးရာတစ်ခုတည်းသော threading နည်းလမ်းနှင့်အညီတစ်ခုအားတစ်ခုကတောင်းဆိုလျှင်၎င်းသည်နှေးကွေးရုံသာမကဆာဗာအရင်းအမြစ်များကိုဖြုန်းတီးလိမ့်မည်။ curl_multi_exec နှင့် curl_multi_clocke functions များသည် curlti_multi_clockexcec နှင့် curl_multi_close functions များကို curl extension ကိုထောက်ပံ့ပေးနိုင်သည်။

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

အခြေခံသဘောတရားများ

  • curl_exec () - တစ်ခုတည်းသောဆံပင်ကောက်ကောက်တောင်းဆိုမှုကိုလုပ်ဆောင်ပါ။

  • curl_multi_exec () : curl မျိုးစုံကိုတစ်ပြိုင်တည်းကိုင်တွယ်ပါ။

  • curl_multi_close () - ကောက်ကောက်သုတ်ခြင်းလက်ကိုင်ကိုပိတ်ပြီးအရင်းအမြစ်ကိုထုတ်လွှတ်ပါ။

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

နမူနာကုဒ်

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

 <?php
// တောင်းဆိုရန်URLစာရင်း
$urls = [
    "https://gitbox.net/api/data1",
    "https://gitbox.net/api/data2",
    "https://gitbox.net/api/data3",
];

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

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

// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
    $status = curl_multi_exec($multiHandle, $running);
    if ($status > 0) {
        // အမှားတစ်ခုဖြစ်ပွားခဲ့သည်
        echo "cURL error: " . curl_multi_strerror($status);
        break;
    }
    // တက်ကြွစွာဆက်သွယ်မှုကိုစောင့်ဆိုင်း
    curl_multi_select($multiHandle);
} while ($running > 0);

// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏တုံ့ပြန်မှုဖြစ်စဉ်ကို
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    $info = curl_getinfo($ch);
    if (curl_errno($ch)) {
        echo 'Request Error: ' . curl_error($ch) . PHP_EOL;
    } else {
        echo 'HTTP Code: ' . $info['http_code'] . PHP_EOL;
        echo 'Response: ' . $response . PHP_EOL;
    }
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// ရုပ်သိမ်းခြင်းmulti handle
curl_multi_close($multiHandle);
?>

ဥပမာပြပါ

  • curl_multi_init မှတဆင့် multi-hands ကိုဖန်တီးပါ။

  • မျဉ်းကြောင်းတစ်ခုစီကိုသီးခြားစီထားပြီးနောက် curl_mamulti_add_handle () မှတစ်ဆင့် Multi Musti Multi Multi Multi Multi Multi Multi Multi Multi Multi Multi ။

  • တောင်းဆိုမှုများအားလုံးကိုမပြီးမချင်းတောင်းဆိုမှုများအားလုံးကိုရယူရန်အတွက် Curl_Multi_exec () ကိုသုံးပါ။

  • curl_multi_select () CPU IDLLENENess ကိုလျှော့ချနိုင်ပြီးထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။

  • တောင်းဆိုမှုပြီးဆုံးသွားသောအခါ Curl_multi_getcontent () ကို သုံးပါ။

  • နောက်ဆုံးတွင် Curl_multi_remove_handle () ကိုဖယ်ရှားရန်နှင့် curl_multi_close () ကိုဖယ်ရှားရန် Curl_multi_close () ကိုပိတ်ရန် Multi Multipo () ကိုပိတ်ရန်။

မှတ်သားရန်အရာ

  • တစ်ပြိုင်နက်တည်းက concurrent - တစ်ကြိမ်တောင်းဆိုမှုများအတွက် URLs များများစားစားရှိပါက၎င်းတို့အားအရင်းအမြစ်များစွာကိုမစားနိုင်အောင်တောင်းဆိုမှု 10 ခုသာပြုလုပ်ရန်အကြံပြုသည်။

  • အချိန်ကုန်ခြင်း - curlopt_tilout သို့မဟုတ် curlot_connectimeout အချို့တောင်းဆိုမှုများကိုရေရှည်ဆွဲထားခြင်းကိုရှောင်ရှားရန်သတ်မှတ်နိုင်သည်။

  • အမှားကိုင်တွယ်ခြင်း - curl_errno () နှင့် curl_error () နှင့် curl_error () ကို သုံးပါ။

  • ဆက်သွယ်မှုပြန်လည်သုံးသပ်ခြင်း - curlopt_forbid_reuse ကိုဖွင့်ခြင်းက TCP ဆက်သွယ်မှုဖန်တီးမှုကိုမကြာခဏတိုးတက်စေရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ရှောင်ရှားနိုင်သည်။

အကျဉ်းချုပ်

curl_exec နှင့် curl_multi_close ကို ပေါင်းစပ်ခြင်းအားဖြင့် PHP တွင် HTTP တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုထိရောက်စွာကိုင်တွယ်နိုင်သည်။ ဤနည်းလမ်းသည်ခြုံငုံတောင်းဆိုမှုအချိန်ကိုတိုစေရုံသာမကဆာဗာ၏တစ်ပြိုင်နက်တည်းစွမ်းရည်များကိုလည်းအပြည့်အဝအသုံးချနိုင်သည်။ ၎င်းသည်စွမ်းဆောင်ရည်မြင့်မားသော PHP applications များကိုတည်ဆောက်ရန်အတွက်မရှိမဖြစ်လိုအပ်သောစွမ်းရည်များထဲမှတစ်ခုဖြစ်သည်။

ဤအခြေခံများကိုကျွမ်းကျင်စွာဖြင့်သင်၏ PHP application ကိုပိုမိုမြန်ဆန်စွာပြေးနိုင်အောင်ပြုလုပ်နိုင်သည်။