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

curl_multi_close နှင့် curl_multi_add_handle အကြားမှန်ကန်သောပူးပေါင်းဆောင်ရွက်မှု

gitbox 2025-05-29

ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်တစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်သည့်အခြေအနေများကြုံတွေ့ရနိုင်သည်။ PHP ၏ဆံပင်ကျွတ်စာကြည့်တိုက်သည် curl_multi_ * function ဖြစ်သော HTTP တောင်းဆိုမှုများကိုစတင်ရန်အလွန်အဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ curl_multi_add_handle နှင့် curl_multi_close သည်ဤလည်ပတ်မှုအမျိုးအစားတွင်အဓိကလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် curl တောင်းဆိုမှုစီမံခန့်ခွဲမှုအတွက်မည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုရှင်းပြပါမည်။

1 ။ ကောက်ကောက်ဖို့နိဒါန်း

ကောက်ကောက်သည်ဆာဗာများသို့တောင်းဆိုမှုများကိုပေးပို့ခြင်းနှင့်တုံ့ပြန်မှုများရယူခြင်းအတွက်ကိရိယာတစ်ခုဖြစ်သည်။ HTTP, HTTPS, FTP စသည့် protocols မျိုးစုံကိုထောက်ပံ့သည် PHP တွင် curl ကို functions များမှတဆင့်လည်ပတ်နိုင်သည်။ အသုံးအများဆုံးအသုံးပြုသူများမှာ curl_init , curl_setopt နှင့် curl_exec တို့ ပါဝင်သည်။

2 ။ curl_multi_add_handle ကိုအသုံးပြုခြင်း

curl_multi_add_handle function သည် curl curl session မျိုးစုံကိုမျိုးစုံကိုကောက်ကောက်ဖြင့်ပြုလုပ်ထားသောရေကန်သို့ထည့်ရန်အသုံးပြုသည်။ ၎င်းသည်အပြိုင်တောင်းဆိုမှုများကိုအပြိုင်တောင်းဆိုမှုများကိုပြုလုပ်ရန်ခွင့်ပြုသည်။ အထူးသဖြင့် HTTP တောင်းဆိုမှုများကိုပေးပို့ရန်လိုအပ်သည့်အခါ,

နမူနာကုဒ်:

 // မျိုးစုံကိုအစပြု cURL ရုံးထိုင်အချိန်ကာလ
$ch1 = curl_init('https://gitbox.net/api/resource1');
$ch2 = curl_init('https://gitbox.net/api/resource2');

// တစ်ခုချင်းစီကို set up cURL တောင်းဆိုထားသောရွေးချယ်စရာများ
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// ဘယ်လောက်စတင် cURL လက်ကိုင်
$multiHandle = curl_multi_init();

// သေတမ်းစာ cURL လက်ကိုင်ထည့်သည်到多重 cURL လက်ကိုင်中
curl_multi_add_handle($multiHandle, $ch1);
curl_multi_add_handle($multiHandle, $ch2);

// တောင်းဆိုမှုကို execute
do {
    $status = curl_multi_exec($multiHandle, $active);
    if ($active) {
        // ဖြည့်စွက်ရန်လှုပ်ရှားမှုတောင်းဆိုမှုကိုစောင့်ပါ
        curl_multi_select($multiHandle);
    }
} while ($active && $status == CURLM_OK);

// တုံ့ပြန်မှုဒေတာကိုရယူပါ
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);

// ရလဒ်ရလဒ်
echo "Response from resource1: $response1\n";
echo "Response from resource2: $response2\n";

// တစ်ခုချင်းစီကိုပိတ်ပါ cURL ရုံးထိုင်အချိန်ကာလ
curl_multi_remove_handle($multiHandle, $ch1);
curl_multi_remove_handle($multiHandle, $ch2);

အထက်ပါကုဒ်တွင် curl_multi_add_handle သည် CH1 နှင့် CH2 ကိုဒေါ်လာ multihandle မျိုးစုံလက်ကိုင်လက်ကိုင်လက်ကိုင်လက်ကိုင် လက်ကိုင် လက်ကိုင် 2 ခုနှင့် ဒေါ်လာ ch2 ကို curl နှစ်ခုနှင့် che ch2 ကိုထည့်သွင်းပြီး, curl_mamulti_exec မှတဆင့်လုပ်ဆောင်သည်။ curl_multi_select က တောင်းဆိုမှုကိုပြီးစီးရန်စောင့်ဆိုင်းမည်ဖြစ်ပြီးအပြိုင်အပြောင်းအလဲများကိုအကောင်အထည်ဖော်ရန်စောင့်ဆိုင်းလိမ့်မည်။

3 ။ curl_multi_close အသုံးပြုခြင်း

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

နမူနာကုဒ်:

 // တောင်းဆိုမှုကိုပြီးဆုံးပြီးနောက်ဘယ်လောက်ပိတ်ရမလဲ cURL လက်ကိုင်
curl_multi_close($multiHandle);

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

4 ။ ပြည့်စုံသောဥပမာ

curl_mamulti_add_handle နှင့် curl_multi_close နှင့် curl_multi_close သုံး. http တောင်းဆိုမှုများကိုမည်သို့စီမံခန့်ခွဲရမည်ကိုပြသည့်ကောင်းသောဥပမာတစ်ခုမှာဤတွင်ဖော်ပြထားသည်။

 // မျိုးစုံကိုအစပြု cURL ရုံးထိုင်အချိန်ကာလ
$ch1 = curl_init('https://gitbox.net/api/resource1');
$ch2 = curl_init('https://gitbox.net/api/resource2');

// တည်ဆောက်သည် cURL ရွေးချယ်စရာများ
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// ဘယ်လောက်စတင် cURL လက်ကိုင်
$multiHandle = curl_multi_init();

// ထည့်သည် cURL ရုံးထိုင်အချိန်ကာလ到多重处理池
curl_multi_add_handle($multiHandle, $ch1);
curl_multi_add_handle($multiHandle, $ch2);

// မျိုးစုံတောင်းဆိုမှုများလုပ်ဆောင်ပါ
do {
    $status = curl_multi_exec($multiHandle, $active);
    if ($active) {
        curl_multi_select($multiHandle); // ဖြည့်စွက်ရန်တောင်းဆိုမှုကိုစောင့်ပါ
    }
} while ($active && $status == CURLM_OK);

// ပြန်လာသောအကြောင်းအရာကိုရယူပါ
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);

// output တောင်းဆိုမှုရလဒ်
echo "Response from resource1: $response1\n";
echo "Response from resource2: $response2\n";

// ရေွှ့ cURL ရုံးထိုင်အချိန်ကာလ
curl_multi_remove_handle($multiHandle, $ch1);
curl_multi_remove_handle($multiHandle, $ch2);

// ဘယ်လောက်ချွတ်တယ် cURL လက်ကိုင်
curl_multi_close($multiHandle);

ဤကုဒ်သည် HTTP တောင်းဆိုမှုများကိုအပြိုင်နှင့်အပြိုင်နှင့်အပြိုင်နှင့်အပြိုင်အဆက်စောင်းခြင်းနှင့်တောင်းဆိုမှုပြီးဆုံးပြီးနောက် curl furlles များကိုပိတ်လိုက်သည်ကိုအပြည့်အဝပြသသည်။