ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်တစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်သည့်အခြေအနေများကြုံတွေ့ရနိုင်သည်။ PHP ၏ဆံပင်ကျွတ်စာကြည့်တိုက်သည် curl_multi_ * function ဖြစ်သော HTTP တောင်းဆိုမှုများကိုစတင်ရန်အလွန်အဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ curl_multi_add_handle နှင့် curl_multi_close သည်ဤလည်ပတ်မှုအမျိုးအစားတွင်အဓိကလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် curl တောင်းဆိုမှုစီမံခန့်ခွဲမှုအတွက်မည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုရှင်းပြပါမည်။
ကောက်ကောက်သည်ဆာဗာများသို့တောင်းဆိုမှုများကိုပေးပို့ခြင်းနှင့်တုံ့ပြန်မှုများရယူခြင်းအတွက်ကိရိယာတစ်ခုဖြစ်သည်။ HTTP, HTTPS, FTP စသည့် protocols မျိုးစုံကိုထောက်ပံ့သည် PHP တွင် curl ကို functions များမှတဆင့်လည်ပတ်နိုင်သည်။ အသုံးအများဆုံးအသုံးပြုသူများမှာ curl_init , curl_setopt နှင့် curl_exec တို့ ပါဝင်သည်။
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 က တောင်းဆိုမှုကိုပြီးစီးရန်စောင့်ဆိုင်းမည်ဖြစ်ပြီးအပြိုင်အပြောင်းအလဲများကိုအကောင်အထည်ဖော်ရန်စောင့်ဆိုင်းလိမ့်မည်။
တောင်းဆိုမှုများအားလုံးပြီးဆုံးသွားသောအခါကျွန်ုပ်တို့သည် curl လက်ကိုင်မျိုးကိုပိတ်ရန်လိုအပ်သည်။ ဤအချိန်တွင် curl_multi_close function ကိုသုံးပါ။ ဤလုပ်ဆောင်မှုသည် curl_multi_init မှဖန်တီးထားသောလက်ကိုင်နှင့်ဆက်စပ်သောအရင်းအမြစ်များကိုထုတ်လွှင့်သည်။
// တောင်းဆိုမှုကိုပြီးဆုံးပြီးနောက်ဘယ်လောက်ပိတ်ရမလဲ cURL လက်ကိုင်
curl_multi_close($multiHandle);
curl_multi_close ကိုအသုံးပြုပြီးနောက် curl လက်ကိုင်နှင့်ဆက်စပ်သောအရင်းအမြစ်များအားလုံးသည်သန့်ရှင်းရေးလုပ်ထားခြင်းဖြစ်သည်။ သတိပြုရန်မှာဆံပင်ကောက်ကောက်လက်ကိုင်များကိုမပိတ်မီထပ်ဆောင်း curl လက်ကိုင်များကို ဦး စွာဖယ်ရှားပစ်ရမည်ဟုမှတ်ချက်ပြုထားရမည်။
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 များကိုပိတ်လိုက်သည်ကိုအပြည့်အဝပြသသည်။