လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_multi_close ကိုဘယ်လိုကိုင်တွယ်ရမလဲ။

curl_multi_close ကိုဘယ်လိုကိုင်တွယ်ရမလဲ။

gitbox 2025-05-29

PHP တွင် curl_multi_ * သည်တောင်းဆိုမှု၏ထိရောက်မှုကိုတိုးတက်စေရန်တစ်ချိန်တည်းတွင်ပင်ဆံပင်ကောက်ကောက်တောင်းဆိုမှုများကိုစတင်ရန်အသုံးပြုသည်။ သို့သော်သင် Curl_multi_Close ဟုခေါ်သည့်အခါသင်က curl session တစ်ခုအဆုံးသတ်ရန်သင်တောင်းဆိုမှု၏ပြန်လည်ရလဒ်ကိုမရနိုင်ပါ။ curl_multi_close ဟုခေါ်ဆိုပြီးနောက်တောင်းဆိုမှုတစ်ခုချင်းစီ၏ပြန်လာရလဒ်ကိုရရန်လှည့်ကွက်အချို့လိုအပ်သည်။

ဤဆောင်းပါးတွင် curl_multi_close ပြီးနောက်တောင်းဆိုမှုများအားလုံး၏ပြန်လာရလဒ်ကိုမည်သို့မှန်ကန်စွာရယူရမည်ကိုကျွန်ုပ်တို့ရှင်းပြပါမည်။

ပြန်လည်ရရှိရန်အတွက် curl_multi_getcontent ကို သုံးပါ

curl_multi_close ကို ခေါ်ပြီးနောက် Curl တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုအကြောင်းအရာများကို curl_multi_getcontent မှတဆင့်ရယူနိုင်သည်။ ပြန်လာသောရလဒ်အားလုံးကိုမှန်ကန်စွာရရှိရန်အတွက်တောင်းဆိုမှုတစ်ခုစီ၏ရလဒ်များကိုဆံပင်ကောက်ကောက်မပိတ်မီထိန်းသိမ်းထားရန်လိုအပ်သည်။

ဤတွင်ပြည့်စုံသောဥပမာတစ်ခုမှာ -

 <?php
// ဖြစ်ပေါ်လာခြင်းcURLလက်ကိုင်
$urls = [
    'https://gitbox.net/api/endpoint1',
    'https://gitbox.net/api/endpoint2',
    'https://gitbox.net/api/endpoint3'
];

$multiCurl = curl_multi_init();
$curlHandles = [];

// တစ်ခုချင်းစီသည်URLဖန်တီးcURLလက်ကိုင်并添加到多重请求队列
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // ပြန်လာသောအကြောင်းအရာကိုရယူပါ
    curl_multi_add_handle($multiCurl, $ch);
    $curlHandles[] = $ch;
}

// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
    curl_multi_exec($multiCurl, $running);
    curl_multi_select($multiCurl);
} while ($running > 0);

// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်ကိုရယူပါ
$responses = [];
foreach ($curlHandles as $ch) {
    $responses[] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($multiCurl, $ch); // 从多重请求队列中移除လက်ကိုင်
}

// ရုပ်သိမ်းခြင်းcURLစကားစမြည်ဝိုင်းများစွာ
curl_multi_close($multiCurl);

// တစ်ခုချင်းစီကိုတောင်းဆိုမှုအတွက်ပြန်လာရလဒ် output ကို
foreach ($responses as $response) {
    echo $response . "\n";
}
?>

code parsing

  1. မျိုးစုံတောင်းဆိုခြင်းလက်ကိုင်များကို အစပြု . :

    • URLs အားလုံးကိုတောင်းဆိုရန် URL များကိုသိမ်းဆည်းရန်ပထမ ဦး ဆုံး URLs တစ်ခုသတ်မှတ်ထားသည်။ ဤဥပမာတွင် URL အားလုံးကို GitBox.net domain names များဖြင့်အစားထိုးထားသည်။

    • URL တစ်ခုချင်းစီအတွက် chl လက်ကိုင်ကို CHLECT ကိုဖန်တီးပြီး curl session ကိုထည့်ပါ။

  2. တောင်းဆိုမှုကိုလုပ်ဆောင်ပါ

    • session တစ်ခုအနေဖြင့်တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ရန် curl_multi_exec () ကို သုံးပါ။ ကျွန်ုပ်တို့သည်တောင်းဆိုမှုပြီးဆုံးသည်အထိကျွန်ုပ်တို့သည်ပျင်းရိခြင်းမပြုရန်သေချာစေရန် curl_multi_select () ကို အသုံးပြုသည်။

  3. တောင်းဆိုမှုရလဒ်ကိုရယူပါ

    • တောင်းဆိုမှုများအားလုံးကိုပြီးစီးပြီးနောက် Curl_multi_getContent ($ ch) ကို အသုံးပြုသည်

  4. သန့်ရှင်းရေးလုပ်သည် :

    • curl_multi_remove_handle ($ multicul, $ ch) ကို သုံး. curl_multi_close () curl_multi_close () ကို Curl_multi_close () ကို Curl_multi_close () ကိုသုံးသည်။

  5. output တုံ့ပြန်မှုအကြောင်းအရာ :

    • နောက်ဆုံးအနေဖြင့် $ reses array နှင့်တောင်းဆိုမှုတစ်ခုချင်းစီ၏တုန့်ပြန်မှုအကြောင်းအရာများကိုထုတ်ပြန်ခြင်းကိုထုတ်ပေးသည်။

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

  • ပြတ်တောင်းပြတ်တောင်းအပြောင်းအလဲအတွက် - curl_multi_ * function ၏အကြီးမားဆုံးအားသာချက်များမှာတစ်ချိန်တည်းတွင်တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်တောင်းဆိုမှုများကိုပေးပို့နိုင်သည်။ ၎င်းသည်တစ်ပြိုင်တည်းတောင်းဆိုမှုများအတွက်အထူးအသုံးဝင်သည်။ Multi- တောင်းဆိုမှုမြင်ကွင်းတွင်ပင် curl_mamulti_getcontent သည် တောင်းဆိုမှုတစ်ခုစီ၏ပြန်လာရလဒ်ကိုမှန်ကန်စွာရရှိနိုင်ပါသည်။

  • အချိန်ကြာမြင့်စွာလုပ်ဆောင်ရန်တောင်းဆိုခြင်း - အစစ်အမှန်ဖြစ်ရပ်များတွင် curlopt_Timeout ကဲ့သို့သောတောင်းဆိုမှုတစ်ခုစီအတွက် server တုံ့ပြန်မှုကြောင့်အခြားတောင်းဆိုမှုများကိုပိတ်ဆို့ခြင်းကိုရှောင်ရှားရန်တောင်းဆိုမှုတစ်ခုစီအတွက်အချိန်ကုန်ရန်လိုအပ်သည်။

  • အမှားကိုင်တွယ်ခြင်း - ဆံပင်ကောက် ကောက် ကိုအသုံးပြုသောအခါတောင်းဆိုမှုသည်အောင်မြင်မှုရှိ / မရှိစစ်ဆေးရန်သတိရပါ။