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

curl_multi_init နှင့်အတူမှန်ကန်သောအမိန့်အတွက် curl_multi_close ကိုသုံးပါ

gitbox 2025-05-12

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

သို့သော် developer များစွာသည် curl_multi_Close () ကိုအသုံးပြုသောအခါသယံဇာတထုတ်လွှတ်မှုလုပ်ငန်းစဉ်ကိုမကြာခဏလျစ်လျူရှုလေ့ရှိသည်။ ဤဆောင်းပါးသည်စံသတ်မှတ်ချက်ကိုအဓိကလိုင်းအဖြစ်ယူသွားပါမည်။ curl_multi_init ကို curlti_close ကို curlti_close ၏ပြီးပြည့်စုံသောအသုံးပြုမှုကိုနားလည်လိမ့်မည်။

1 ။ curl_multi စီးရီး function ကဘာလဲ?

PHP မှပေးသော functions ၏ curl_multi_ * PHP မှပေးသောလုပ်ဆောင်ချက်များသည် တစ်ပြိုင်နက်တည်း curl လက်ကိုင်များကိုစီမံရန် ကိရိယာများဖြစ်သည်။ ၎င်းသည်ရိုးရာတစ်ခုတည်း curl တောင်းဆိုမှုနှင့်ကွဲပြားခြားနားသည်, ၎င်းသည်သင့်အားတစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်လှုံ့ဆော်ပေးသည်။

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

  1. Multi Multi Multi Multi Multi> Curl_multi_init ()

  2. curl_mamulti_add_handle () curl_multi_add_handle (လွယ်ကူသောလက်ကိုင်) ထည့်ပါ။

  3. တောင်းဆိုမှုများကို execute: curl_multi_exec () နှင့် curl_multi_select ()

  4. တုံ့ပြန်မှုအကြောင်းအရာကိုရယူပါ။ curl_mamulti_getcontent ()

  5. လွယ်ကူသောလက်ကိုင်ကိုဖယ်ရှားခြင်းနှင့်ပိတ်ပါ။ curl_multi_remove_handle () နှင့် curl_close ()

  6. Multi Multi Multi Multi> Curl_Multi_Close ()

2 ။ စံသတ်မှတ်ချက်ရှင်းပြချက်နှင့်ကုဒ်နမူနာများ

ဤတွင်ကျွန်ုပ်တို့သည်ပုံမှန် multi-cornes ကိုဖြစ်စဉ်တစ်ခုဖြစ်သည်ဟုယူဆပြီး URLs သုံးခုကိုတစ်ပြိုင်တည်းတောင်းခံရန်လိုအပ်သည်ဟုယူဆသည်။

 <?php

// တောင်းဆိုရန် URL စာရင်း
$urls = [
    "https://gitbox.net/api/service1",
    "https://gitbox.net/api/service2",
    "https://gitbox.net/api/service3"
];

// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
$curlHandles = [];

// 1. တစ်ခုချင်းစီသည် URL a curl easy handle နှင့်ထည့်ပါ multi handle အလယ်ပိုင်း
foreach ($urls as $i => $url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_multi_add_handle($multiHandle, $ch);
    $curlHandles[$i] = $ch;
}

// 2. ကရိယာတန်းဆာ multi မေးမြန်း
$active = null;
do {
    $mrc = curl_multi_exec($multiHandle, $active);
    // အင်တာနက်ကိုစောင့်ဆိုင်း I/O အဆင်သင့်ရ,ရေှာင်ရှား CPU အလွန်မြင့်မားသောထေို
    if ($mrc == CURLM_OK) {
        curl_multi_select($multiHandle);
    }
} while ($active > 0 && $mrc == CURLM_OK);

// 3. အကြောင်းအရာနှင့်သန့်ရှင်းသောလက်ကိုင်များကိုရယူပါ
$responses = [];
foreach ($curlHandles as $i => $ch) {
    // တုန့်ပြန်အကြောင်းအရာကိုရယူပါ
    $responses[$i] = curl_multi_getcontent($ch);

    // တစ်ခုတည်းဖယ်ရှားခြင်းနှင့်ပိတ်ပါ handle
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// 4. နောက်ဆုံးအနီးကပ် multi handle,အရင်းအမြစ်များကိုအခမဲ့
curl_multi_close($multiHandle);

// ရလဒ်ရလဒ်
foreach ($responses as $index => $body) {
    echo "Response from URL #{$index}: \n";
    echo $body . "\n\n";
}

3 ။ curl_multi_close သည်အဘယ်ကြောင့်အရေးကြီးသနည်း။

curl_multi_close () သည် လွယ်ကူသော လက်ကိုင်ကိုချက်ချင်းမဖျက်ဆီးနိုင်သော်လည်း (သင်သူတို့ကိုဖယ်ရှားပစ်ရန်လိုအပ်သည်) သော်လည်းကောင်း, သင်ခေါ်ဆိုရန်မေ့နေပါကမှတ်ဉာဏ်ပေါက်ကြားမှုများသို့မဟုတ်နေရပ်ပြန်ရေးသော scriptes များကဲ့သို့သော descriptor absion များကိုဖြစ်စေနိုင်သည်။

အနှစ်ချုပ် - curl_multi_init ကို သုံးသောမည်သည့် script ကိုမဆို curl_multi_close () နှင့်အဆုံးသတ်ရမည်။

4 ။ မကြာခဏမေးသောမေးခွန်းများ

  1. တောင်းဆိုခြင်းကိုပိတ်ဆို့ခြင်းနှင့်မှီဝဲခြင်း?

    • curl_multi_select () ကို မှန်ကန်စွာအသုံးပြုသည်ဆိုပါကစစ်ဆေးပါ။

    • curl_setopt (... , curlopt_rreturntransfer, စစ်မှန် ကြောင်းသေချာအောင်လုပ်ပါ။

  2. မှတ်ဉာဏ်ယိုစိမ့်မှုသို့မဟုတ်ဆက်သွယ်မှုခြွင်းချက်?

    • curl_multi_remove_handle () နှင့် curl_close () ကိုတောင်းဆိုမှုတစ်ခုချင်းစီကိုတောင်းဆိုသည်။

    • curl_multi_close () နောက်ဆုံးတွင်ခေါ်?

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

curl_multi_ * ကွန်ယက်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်သောအခါအလွန်ထိရောက်သောနည်းလမ်းများပေးသည်။ curl_multi_init () curlulti_close () ကို curlti_close () ကို curlti_close () ကို curlti_close () ကို curlti_close () ကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။

ဒီ "must" သုံးခုကိုသတိရပါ:

  • တောင်းဆိုမှုတစ်ခုချင်းစီကို Multi Matchies တွင်ထည့်သွင်းရမည်။

  • တောင်းဆိုမှုတစ်ခုစီကိုပြီးစီးပြီးနောက်ဖယ်ရှားပြီးပိတ်ထားရမည်။

  • နောက်ဆုံးတွင် curl_mamulti_close () ကို Multies Multipi Multipi Multipi ကိုအခမဲ့ပေးရမည်။

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