လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင် multi curl တောင်းဆိုမှုများကိုစနစ်တကျကိုင်တွယ်ဖြေရှင်းရန်နှင့် curl_close နှင့်အဆုံးသတ်မည်နည်း။

PHP တွင် multi curl တောင်းဆိုမှုများကိုစနစ်တကျကိုင်တွယ်ဖြေရှင်းရန်နှင့် curl_close နှင့်အဆုံးသတ်မည်နည်း။

gitbox 2025-05-18

PHP တွင်ဆံပင်ကောက်ကောက်သည် 0 က်ဘ်၏ 0 က်ဘ်စာမျက်နှာများကို 0 င်ရောက်ခြင်းသို့မဟုတ် 0 က်ဘ်၏စာမျက်နှာများကိုရယူခြင်းကဲ့သို့သောကွန်ယက်တောင်းဆိုမှုများအတွက်အားကောင်းသောစာကြည့်တိုက်ဖြစ်သည်။ Curl_init () , curl_exec () ကို အသုံးပြု. လက်ကိုင်ကိုအစပိုင်းတွင်စတင်ရန်အတွက်ပုံမှန်ဖြစ်စဉ်ကိုစတင်ရန်ပုံမှန်ဖြစ်စဉ်တစ်ခုဖြစ်သည်။ သို့သော်, တစ်ပြိုင်တည်းတောင်းဆိုမှုများကိုကိုင်တွယ်သည့်အခါအထူးသဖြင့် curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များကိုအသုံးပြုသည့်အခါအထူးသဖြင့်အရင်းအမြစ်များကိုစနစ်တကျအနီးကပ်သန့်ရှင်းရေးလုပ်ရန်အထူးအရေးကြီးသည်။ ထိုသို့ပြုလုပ်ရန်ပျက်ကွက်ခြင်းသည်မှတ်ဉာဏ်ယိုစိမ့်မှုသို့မဟုတ်ကွန်ယက်ချိတ်ဆက်မှုပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။

1 ။ အခြေခံဆံပင်ကောက်ကောက်တောင်းဆိုမှုလုပ်ငန်းစဉ်ကိုပြန်လည်သုံးသပ်

တောင်းဆိုမှုတစ်ခုတည်းတွင်ပုံမှန်ကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://gitbox.net/api/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch); // အရင်းအမြစ်များကိုမှန်ကန်စွာဖြန့်ချိ

ဤတွင် curl_close ($ ch) လိုအပ်သည်။ ၎င်းသည် curl_init () မှဖန်တီးထားသောဆံပင်ကောက်ကောက်လက်ကိုင်ကိုပိတ်ပြီးသက်ဆိုင်ရာအရင်းအမြစ်များကိုလွှတ်ပေးသည်။

2 ။ တောင်းဆိုမှုများကိုကိုင်တွယ်ရန်သာမန်နည်းလမ်းများ

တောင်းဆိုမှုများစွာကိုအချိန်တိုင်းအစပြုရန်တောင်းဆိုမှုများလိုအပ်သည့်ဖြစ်ရပ်များအတွက် PHP သည် curl_multi_ * interface ကိုပေးသည်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -

 $urls = [
    'https://gitbox.net/api/one',
    'https://gitbox.net/api/two',
    'https://gitbox.net/api/three',
];

$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 {
    curl_multi_exec($multiHandle, $running);
    curl_multi_select($multiHandle);
} while ($running > 0);

// ရလဒ်များကိုရယူပါ
$responses = [];
foreach ($curlHandles as $ch) {
    $responses[] = curl_multi_getcontent($ch);
}

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

3 ။ မှန်ကန်စွာတောင်းဆိုထားသောအရင်းအမြစ်များကိုထုတ်ပြန်ပါ

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

 foreach ($curlHandles as $ch) {
    curl_multi_remove_handle($multiHandle, $ch); // မှ multi handle ဖယ်ရှားခဲ့သည်
    curl_close($ch); // တစ်ခုတည်းကိုပိတ်ပါ cURL လက်ကိုင်,အရင်းအမြစ်များကိုအခမဲ့
}

curl_multi_close($multiHandle); // နောက်ဆုံးအနီးကပ် multi handle

အရင်းအမြစ်များအားလုံးဖြန့်ချိကြောင်းသေချာစေရန်ဤသည်အရေးပါသောခြေလှမ်းတစ်ခုဖြစ်သည်။ curl_multi_close () ကို curl_close () တစ် ဦး တည်းဖြင့်ခေါ်ဆိုခြင်းမရှိဘဲပိတ်ထားရန်မလုံလောက်ပါ။

4 ။ အကောင်းဆုံးအလေ့အကျင့်များနှင့်အကြံပြုချက်များ

  1. အမြဲတမ်းအတိအလင်းဖြန့်ချိမှု - ၎င်းသည်တစ်ခုတည်းသောတောင်းဆိုမှုများဖြစ်စေ, မျိုးစုံတောင်းဆိုမှုများဖြစ်စေ,

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

  3. Memory နှင့် Connection Count ကိုစောင့်ကြည့်လေ့လာပါ ။ အ 0 တ်အထည်ချုပ်သည့်ပတ်ဝန်းကျင်တွင်မပါ 0 င်သောဆံပင်ကောက်ကောက်များသည်လျင်မြန်စွာသယံဇာတများပင်ပန်းနွမ်းနယ်စေသည်။

  4. EncapsulationSultion တောင်းဆိုမှုယုတ္တိဗေဒ - ချန်လှပ်ခြင်းကိုရှောင်ရှားရန်အရင်းအမြစ်ဖြန့်ချိမှုကိုကိုင်တွယ်ရန်၎င်းကို function တစ်ခုသို့မဟုတ်အတန်းထဲသို့ချထားရန်အကြံပြုသည်။

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

curl_close () PHP တွင်အထူးသဖြင့်တောင်းဆိုမှုအမြင်တွင် PHP တွင်မရွေးနိုင်ပါ။ curl_multi_remove_handle () နှင့် curl_close () ကိုမှန်ကန်သောအသုံးပြုမှုသည်စနစ်တည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုသေချာစေနိုင်သည်။ တောင်းဆိုမှုယုတ္တိဗေဒကိုရေးပြီးပါကဤအဆင့်ကိုမမေ့ပါနှင့်။ အရင်းအမြစ်များကိုအချိန်တန်လျှင်သန့်ရှင်းရေးလုပ်ခြင်းသည်အကောင်းဆုံးစွမ်းဆောင်ရည်အကောင်းဆုံးဖြစ်သည်။