PHP တွင် ဆံပင်ကောက်ကောက်သည် HTTP , HTTPS, FTP တို့ကဲ့သို့သော protocols မျိုးစုံမှတဆင့်တောင်းဆိုမှုများကိုပေးပို့ရန်ခွင့်ပြုသည့်အားနည်းသောစာကြည့်တိုက်တစ်ခုမှာကျွန်ုပ်တို့အားတောင်းဆိုမှုများစွာမှတစ်ဆင့်တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်ပြုလုပ်ရန်ခွင့်ပြုသည်။ ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများသည်အထူးသဖြင့် HTTP တောင်းဆိုမှုများလိုအပ်သည်ကိုအလွန်အသုံးဝင်သည်။
သို့သော် curl_multi_ * function ကို အသုံးပြု. ပြတ် တောင်း ပြတ်တောင်းတောင်းဆိုမှုများအတွက်အသုံးပြုသောအခါ, curl_multi_cloco_cloco_close function ကို ဖြတ်. curl session တစ်ခုကိုကျွန်ုပ်တို့ပိတ်လိုက်သောအခါ connection ကိုစနစ်တကျစီမံခြင်းမရှိသေးပါကဆက်သွယ်မှုအချို့ကိုစနစ်တကျပိတ်ထားခြင်းမပြုမီထပ်ခါတလဲလဲပိတ်ထားနိုင်သည်။
ဤဆောင်းပါးသည် allynchronous တောင်းဆိုမှုများကိုစီမံရန် PHP တွင် curl_multi_close ကို မည်သို့ကောင်းမွန်စွာအသုံးပြုရမည်ကိုသင့်အားပြလိမ့်မည်။
ပထမ ဦး စွာ asynchronous တောင်းဆိုမှုများကိုစတင်ရန် PHP ၏ curl_mamulti_ * စီးရီး function ကိုမည်သို့အသုံးပြုရမည်ကိုကြည့်ကြပါစို့။ ဒီနေရာမှာအခြေခံဥပမာတစ်ခုပါ။
<?php
// မျိုးစုံဖန်တီးပါ cURL ရုံးထိုင်အချိန်ကာလ
$ch1 = curl_init();
$ch2 = curl_init();
// တည်ဆောက်သည် cURL တောင်းဆိုမှုများတောင်းဆိုမှုများ
curl_setopt($ch1, CURLOPT_URL, 'https://gitbox.net/api/endpoint1');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, 'https://gitbox.net/api/endpoint2');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
// ဖန်တီး cURL မျိုးစုံလက်ကိုင်
$mh = curl_multi_init();
// တစ်ခုချင်းစီကိုထည့်ပါ cURL ရုံးထိုင်အချိန်ကာလ加入မျိုးစုံလက်ကိုင်
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်ပါ
do {
$status = curl_multi_exec($mh, $active);
} while ($active);
// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်ကိုရယူပါ
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);
// ရလဒ်ရလဒ်
echo "Response 1: " . $response1 . "\n";
echo "Response 2: " . $response2 . "\n";
// 关闭ရုံးထိုင်အချိန်ကာလ
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
curl_close($ch1);
curl_close($ch2);
?>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည် curl session နှစ်ခုကိုဖန်တီးပြီး Request URL ကိုဖွင့်ပြီး curl_multi_ * function ကို သုံး. တစ်ချိန်တည်းတွင်ထုတ်ပေးရန် curl_multi_ * function ကိုသုံးပါ။ curl_multi_exec သည် တောင်းဆိုမှုများအားလုံးကိုမပြီးမချင်းလည်ပတ်လိမ့်မည်။ ထို့နောက်ကျွန်ုပ်တို့သည်ပြန်လာရလဒ်များရရှိရန်အတွက် curl_multi_getcontent ကို အသုံးပြုသည်။
အထက်ပါကုဒ်များတွင် curl_multi_Close ကို Curl Multi-handle ကိုပိတ်ပြီးတစ် ဦး ချင်းစီကောက်ကောက် seation ကိုပိတ်ရန် curl_close ကို အသုံးပြုခဲ့သည်။ ၎င်းသည်ဘုံအလေ့အကျင့်တစ်ခုဖြစ်သည်, သို့သော် curl_multi_close သည် လက်ကိုင်မျိုးစုံကိုပိတ်ပစ်ရန်သာတာဝန်ရှိကြောင်းသတိပြုသင့်သည်။ curl_multi_close ပိတ်ပစ်ပြီးနောက် curl_close တစ်ခုစီကို curl_close မှတဆင့်ပိတ်ရန်လိုအပ်သည်။
ပြနာ - အကယ်. သင်သည် curl_close သို့မဟုတ် curl_multi_clotose ဟုအကြိမ်ကြိမ်ခေါ်ဆိုပါက, ဒါကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်နည်းလမ်းနှစ်မျိုးယူနိုင်သည်။
တစ် ဦး ချင်းစီကိုတစ်ကြိမ်သာပိတ်ထားသေချာအောင်လုပ်ပါ ကွင်းဆက်များသို့မဟုတ်ထုတ်ယူခြင်းအတွင်းတွင်ကျွန်ုပ်တို့သည်အချို့သောအစည်းအဝေးများကိုအကြိမ်ကြိမ်ပိတ်ထားနိုင်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်ပိတ်သောအခါသင်တစ် ဦး ချင်းစီကိုတစ်ကြိမ်သာပိတ်ထားရန်သေချာစေရန်သင်အမှတ်အသားပြုနိုင်သည်။
ပထမ ဦး ဆုံးလက်ကိုင်ကိုဖယ်ရှားပြီးနောက်ပိတ်ပါ လက်ကိုင်ကိုဖယ်ရှားရန် Curl_multi_remove_Handle ကို သုံးပါ။ curl_mamulti_close ဟုခေါ်သောအခါ၎င်းသည်တံခါးပိတ်လက်ကိုင်များကိုရှောင်ရှားသည်။
ထပ်ခါတလဲလဲ connection များကိုထပ်ခါတလဲလဲပိတ်ခြင်းကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည် Code ကိုတိုးတက်အောင်ပြုလုပ်ခဲ့သည်။
<?php
// မျိုးစုံဖန်တီးပါ cURL ရုံးထိုင်အချိန်ကာလ
$ch1 = curl_init();
$ch2 = curl_init();
// တည်ဆောက်သည် cURL တောင်းဆိုမှုများတောင်းဆိုမှုများ
curl_setopt($ch1, CURLOPT_URL, 'https://gitbox.net/api/endpoint1');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, 'https://gitbox.net/api/endpoint2');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
// ဖန်တီး cURL မျိုးစုံလက်ကိုင်
$mh = curl_multi_init();
// တစ်ခုချင်းစီကိုထည့်ပါ cURL ရုံးထိုင်အချိန်ကာလ加入မျိုးစုံလက်ကိုင်
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်ပါ
do {
$status = curl_multi_exec($mh, $active);
} while ($active);
// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏ရလဒ်ကိုရယူပါ
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);
// ရလဒ်ရလဒ်
echo "Response 1: " . $response1 . "\n";
echo "Response 2: " . $response2 . "\n";
// 移除句柄后再关闭ရုံးထိုင်အချိန်ကာလ
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
// မှန်ကန်စွာပိတ်ပါ
curl_multi_close($mh);
curl_close($ch1);
curl_close($ch2);
?>
စွမ်းဆောင်ရည်တိုးတက်စေရန် asynchronous တောင်းဆိုမှုများကိုထိရောက်စွာစတင်ရန် curl_multi_ * function ကိုသုံးပါ။
curl session တစ်ခုကိုပိတ်လိုက်သည့်အခါ curl_multi_remove_handle ကို သေချာစွာအသုံးပြုပါ, ထို့နောက် curl_multi_close ဟုခေါ်သည်။
Curl_Close မှတဆင့် curl_close မှတဆင့် curl_close မှတဆင့် curl_multi_close အတွက်ထပ်ခါတလဲလဲပိတ်ခြင်းကိုရှောင်ရှားသင့်သည်။
ဆက်သွယ်မှုပိတ်သိမ်းမှုကိုမှန်ကန်စွာစီမံခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ထပ်ခါတလဲလဲဆက်သွယ်မှုများကိုထပ်ခါတလဲလဲပိတ်ခြင်းကိုရှောင်ရှားနိုင်သည်။