လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများပြီးဆုံးပြီးနောက် curl sessions အားလုံးကို curl sessions များအားလုံးကိုကြံ့ပြတ်အောင်မည်သို့နီးကပ်မည်နည်း

တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများပြီးဆုံးပြီးနောက် curl sessions အားလုံးကို curl sessions များအားလုံးကိုကြံ့ပြတ်အောင်မည်သို့နီးကပ်မည်နည်း

gitbox 2025-05-12

တစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများစွာပြုလုပ်သောအခါ PHP မှပေးသော functions ၏ curl_multi_ * PHP မှပေးသောလုပ်ဆောင်ချက်များသည် PHP မှပေးသောလုပ်ဆောင်ချက်များကို php လုပ်ခြင်းသည်သင့်အားတစ်ချိန်တည်းတွင်တူညီသောတောင်းဆိုမှုများကိုစတင်ရန်ခွင့်ပြုသည်။ ၎င်းတို့အနက် curl_multi_close () သည်လုပ်ငန်းစဉ်တစ်ခုလုံး၏နောက်ဆုံးအဆင့်ဖြစ်သည်။ curl_multi_init () မှ အစပြုထားသောအရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ရန်တာ 0 န်ရှိသည်။ တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအားလုံးကိုပြီးစီးပြီးနောက်ဆံပင်ကောက်ကောက်များအားလုံးကိုမည်သို့နီးကပ်စွာပိတ်ထားရမည်ကိုအသေးစိတ်ရှင်းပြရန်ဤဆောင်းပါးသည်ပြည့်စုံသောဥပမာကိုအသုံးပြုပါမည်။

1 ။ အခြေခံသဘောတရားများကိုပြန်လည်သုံးသပ်ခြင်း

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

  1. curl_multi ကွန်တိန်နာကိုအစပြုပါ။

  2. မျိုးစုံ ဆံပင်ကောက်ကောက် တောင်းဆိုမှုများကိုဖန်တီးပြီး curl_multi ကွန်တိန်နာထဲသို့ထည့်ပါ။

  3. တောင်းဆိုမှုအားလုံး၏ကွပ်မျက်မှုကိုမောင်းထုတ်ရန် curl_multi_exec ကို သုံးပါ။

  4. Loop သည်တောင်းဆိုမှုကိုပြီးစီးခြင်းရှိမရှိစစ်ဆေးသည်။

  5. တစ်ခုချင်းစီကို ဆံပင်ကောက်ကောက် တောင်းဆိုမှု၏ရလဒ်များကိုသီးခြားစီလုပ်ဆောင်ပါ။

  6. တစ်ခုချင်းစီကိုတစ် ဦး ချင်းစီ ကောက်ကောက် လက်ကိုင်ဖယ်ရှား။

  7. curl_multi_close () ကိုအသုံးပြုပါ။

2 ။ နမူနာကုဒ်ရှင်းပြချက်

တောင်းဆိုမှုများအားလုံးပြီးဆုံးပြီးနောက် URLs မျိုးစုံကိုတစ်ပြိုင်နက်တည်း URLs များကိုမည်သို့တောင်းခံနိုင်ကြောင်းပြသခြင်းဥပမာတစ်ခုမှာ -

 <?php

// တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများပေးပို့ဖို့ URL စာရင်း
$urls = [
    "https://gitbox.net/api/data1",
    "https://gitbox.net/api/data2",
    "https://gitbox.net/api/data3"
];

// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$multiHandle = curl_multi_init();
$curlHandles = [];

// တစ်ခုချင်းစီသည် URL သီးခြားဖန်တီးပါ curl လက်ကိုင်,နှင့်ပူးပေါင်းပါ multi လက်ကိုင်
foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10
    ]);
    curl_multi_add_handle($multiHandle, $ch);
    $curlHandles[] = $ch;
}

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

// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်ကိုရယူပါ
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    $info = curl_getinfo($ch);
    $error = curl_error($ch);

    echo "URL: " . $info['url'] . PHP_EOL;
    echo "HTTP Code: " . $info['http_code'] . PHP_EOL;
    echo "Response: " . $response . PHP_EOL;
    echo "Error: " . $error . PHP_EOL;
    echo str_repeat("-", 40) . PHP_EOL;

    // 移除并ရုပ်သိမ်းခြင်းလက်ကိုင်
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// နောက်ဆုံးမှာတော့,ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multiHandle);

?>

3 ။ curl_multi_close အကြောင်းမှတ်သားစရာအခြေအနေများ

  • လက်ကိုင်အားလုံးကိုဖယ်ရှားပြီးမှသာခေါ်ဆိုပါcurl_multi_close () မှ Contl_multi_Remove_handle () မှ Curl_multi_Remove_handle () မှ Clel_Close () မှ Contl_Close () တစ် ဦး မှ Contl_Close () တစ် ဦး မှ Contl_Close () တစ် ဦး မှ Contl_Close () မှပထမဆုံး clone လက်ကိုင်များအားလုံးကို ဦး စွာဖယ်ရှားပစ်သင့်သည်။ ဒီလိုမှမဟုတ်ရင်အရင်းအမြစ်များကိုထုတ်ပြန်ခြင်းသို့မဟုတ်အမူအကျင့်ကိုမသေချာမရေရာနိုင်ပါ။

  • Clone လက်ကိုင်ကိုအလိုအလျောက်ပိတ်လိမ့်မည်မဟုတ်ပါcurl_mamulti_close () သည် multi complet သူကိုယ်တိုင်ကိုသာပိတ်ထားမည်မဟုတ်, curl_init မှဖန်တီးထားသောလက်ကိုင်တစ်ခုစီကိုကိုယ်တိုင်လက်ဖြင့်ပိတ်ရန်လိုအပ်သည်။

  • Call Time : curl_multi_close () သည်လုပ်ငန်းစဉ်တစ်ခုလုံးတွင်သင်နောက်ဆုံးလုပ်ထုံးလုပ်နည်းဖြစ်သင့်သည်။ ၎င်း၏ခေါ်ဆိုမှုသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုသက်တမ်းတစ်လျှောက်လုံး၏တရားဝင်အဆုံးဖြစ်သည်။

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

curl_multi_init () နှင့် curl_multi_clotose () စနစ်တကျ () စနစ်တကျ () စနစ်တကျသုံးခြင်းဖြင့် PHP တွင်တစ်ပြိုင်နက်တည်းကွန်ယက်တောင်းဆိုမှုများကိုထိရောက်စွာပြုလုပ်နိုင်သည်။ သတိရဖို့သေချာပါစေ: curl_init () တစ် ဦး ချင်းစီ curl_multi_init () တစ် ဦး ချင်းစီ curl_multi_close () တစ် ဦး ချင်းစီကို curl_mamulti_close () နှင့်ကိုက်ညီသည်။