HTTP တောင်းဆိုမှုများကိုအကြီးစားတောင်းဆိုမှုများပြုလုပ်သောအခါ PHP ၏ဆံပင်ကောက်ကောက်စာကြည့်တိုက်သည်အလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ သို့ရာတွင်တောင်းဆိုမှုများစွာကိုနေရာချထားခြင်းသည်ပိုမိုထိရောက်စွာစီမံခန့်ခွဲရန်လိုအပ်သည်။ ပိုမိုထိရောက်သောဆက်သွယ်မှုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ရန်အတွက် curl_upkeep () နှင့် curl_multi_select () ကိုသုံးနိုင်သည်။
curl_upkeep () - ဤလုပ်ဆောင်ချက်သည်အဓိကအားဖြင့် curl connection များကိုစီမံရန်အဓိကအားဖြင့်အသုံးပြုသည်။
curl_multi_select () - ဒီ function ကို curl_multi_exec () နှင့်အသုံးပြုသည်။ ၎င်းသည် multitasking curl တောင်းဆိုမှုများ၏ကွပ်မျက်မှုများကိုပိုမိုကောင်းမွန်စေရန်ကူညီနိုင်သည့် curlti_exec () ဖြင့်အသုံးပြုသည်။ ၎င်း၏ function ကိုအဆင်သင့်ဖြစ်ရန်အနည်းဆုံးဆံပင်ကောက်ကောက်လက်ကိုင်ကိုအဆင်သင့်ဖြစ်ရန်စောင့်ဆိုင်းရန်ဖြစ်သည်။
ဤလုပ်ဆောင်ချက်နှစ်ခုကိုပေါင်းစပ်ခြင်းအားဖြင့်တောင်းဆိုမှုတစ်ခုစီတွင်နှောင့်နှေးမှုများကိုအလွန်လျှော့ချနိုင်ပြီးတောင်းဆိုမှုများအကြားတစ်ပြိုင်တည်းထုတ်လုပ်ခြင်းထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။
Curl_upkeep () နှင့် curl_multi_multi_selection ကို မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ခြင်းမပြုမီ, အောက်ပါကုဒ်သည် curlfulti_init () နှင့် curl_multi_exec () curl_multi_exec () ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည်။
// မျိုးစုံကိုအစပြုcURLလက်ကိုင်
$mh = curl_multi_init();
$handles = [];
$urls = [
'https://m66.net/api/data1',
'https://m66.net/api/data2',
'https://m66.net/api/data3'
];
// တောင်းဆိုမှုတစ်ခုစီအတွက်တစ်ခုဖန်တီးပါcURLလက်ကိုင်
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// Multitasking တောင်းဆိုမှုများကိုလုပ်ဆောင်ပါ
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh); // တက်ကြွစွာတောင်းဆိုမှုရှိသည်အထိပိတ်ပင်တားဆီးမှု
}
} while ($active);
// ရလဒ်များကိုလုပ်ပါ
foreach ($handles as $ch) {
$response = curl_multi_getcontent($ch);
echo $response;
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
curl_multi_exec () မှတစ်ဆင့် Multitasking တောင်းဆိုမှုများကို curl_multi_exec () curl_multi_select () ဟုခေါ်သော curl_multi_select () curl_mamulti_select () ကိုခေါ်ယူရန်မလိုအပ်သော CPU အရင်းအမြစ်အသုံးပြုမှုကိုရှောင်ရှားရန်။
မကြာခဏဆိုသလို connection များမကြာခဏတည်ထောင်ခြင်းနှင့်ဖျက်ဆီးခြင်းကိုရှောင်ရှားနိုင်ရန်အတွက် curl_upkeep () function ကို ဖြတ်. ဆက်သွယ်မှုမြှောက်စုံပိုးကိုအကောင်အထည်ဖော်နိုင်သည်။ PHP သည် curl_upkeep () function ကိုတိုက်ရိုက်မပေးသော်လည်းအလားတူလုပ်ဆောင်မှုများကိုရရှိရန်ကျွန်ုပ်တို့သည် curl_multi_ * function ကိုသုံးနိုင်သည်။ အထူးသဖြင့်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှုကိုပြန်လည်တောင်းခံသည့်အခါတိုင်းဆက်သွယ်မှုကိုပြန်လည်ဖြည့်ဆည်းပေးမည့်အစားဤဆက်သွယ်မှုများကိုစီမံရန်အမြဲတမ်းဆက်သွယ်မှုရေကူးကန်ကိုအသုံးပြုသည်။
Connection Pool Innolitanation : ငါတို့ပထမ ဦး ဆုံးဆံပင်ကောက်ကောက်ရေကန်တစ်ခုဖန်တီးပြီးတောင်းဆိုမှုတစ်ခုစီအတွက်ဆက်သွယ်မှုအသစ်ကိုအစပြုမည့်အစားရေကန်ထဲရှိဆက်သွယ်မှုများကိုပြန်လည်အသုံးပြုလိမ့်မည်။
ဆက်သွယ်မှုခွေပိုးမွှားများ - Multitasking တောင်းဆိုမှုတောင်းဆိုစဉ်အတွင်းဆက်သွယ်မှုရေကူးကန်ရှိဆက်သွယ်မှုကိုစစ်ဆေးနိုင်သည်။ အခမဲ့ဆက်သွယ်မှုများရှိပါကကျွန်ုပ်တို့ပြန်လည်အသုံးပြုနိုင်သည်။
// မြဲ connection pool ဖန်တီးပါ
$mh = curl_multi_init();
$handles = [];
$connectionPool = [];
// တောင်းဆိုခဲ့သည်URLs
$urls = [
'https://m66.net/api/data1',
'https://m66.net/api/data2',
'https://m66.net/api/data3'
];
// ဖြစ်ပေါ်လာခြင်းcURLလက်ကိုင်并存储
foreach ($urls as $url) {
if (empty($connectionPool[$url])) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$connectionPool[$url] = $ch; // ဆက်သွယ်မှုရေကန်ထဲသို့ဆက်သွယ်မှုအသစ်များကိုသိမ်းဆည်းပါ
} else {
$ch = $connectionPool[$url]; // ဆက်သွယ်မှုရေကန်အတွင်းရှိရှိပြီးသားဆက်သွယ်မှုကိုသုံးပါ
}
curl_multi_add_handle($mh, $ch);
$handles[] = $ch;
}
// Multitasking တောင်းဆိုမှုများကိုလုပ်ဆောင်ပါ
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh); // တက်ကြွစွာတောင်းဆိုမှုရှိသည်အထိပိတ်ပင်တားဆီးမှု
}
} while ($active);
// ရလဒ်များကိုလုပ်ပါ
foreach ($handles as $ch) {
$response = curl_multi_getcontent($ch);
echo $response;
curl_multi_remove_handle($mh, $ch);
// ဤတွင်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှုကိုမပိတ်ပါ,connection pool အတွက် attrimaling ကိုမြှင့်တင်ပါ
}
curl_multi_close($mh);
အထက်ဖော်ပြပါကုဒ်များတွင်ကျွန်ုပ်တို့သည်ရိုးရှင်းသော connection pool connectionpool ကို ဖန်တီးပြီး multitasking တောင်းဆိုမှုများကိုကွပ်မျက်ခံရသည့်အခါရေကန်အတွင်းရှိဆက်သွယ်မှုများနှင့်ဆက်သွယ်မှုများနှင့်ချိတ်ဆက်မှုနှင့်ဆက်စပ်မှုရှိသည်။ ၎င်းသည်အထူးသဖြင့်တောင်းဆိုမှုများစွာသည်တူညီသောဒိုမိန်းအမည်ကိုညွှန်ပြသည့်အခါဆက်သွယ်မှုထိရောက်မှုကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
Curl_upkeep (connection pool စီမံခန့်ခွဲမှု) နှင့် curl_multi_select () curl_multi_select () curl_multi_select () (တက်ကြွတောင်းဆိုမှုများကိုပိတ်ဆို့ခြင်းနှင့်စောင့်ဆိုင်းခြင်း) ကိုပေါင်းစပ်ခြင်းဖြင့်ကျွန်ုပ်တို့သည်စနစ်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် PHP တွင် Multitasking တောင်းဆိုမှုများကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။ ဆက်သွယ်မှုကိုရေကူးကန်သည်မကြာခဏတီထွင်မှုနှင့်ပျက်စီးခြင်းကိုထိရောက်စွာလျော့နည်းစေပြီး system resources များကို Semility ReaseStains သို့ 0 င်ရောက်ခြင်းကိုထိထိရောက်ရောက်လျှော့ချသည်။
ဤနည်းအားဖြင့် HTTP တောင်းဆိုမှုအမြောက်အများကိုကိုင်တွယ်ရန်, ပရိုဂရမ်တုန့်ပြန်မှုမြန်နှုန်းကိုတိုးတက်အောင်လုပ်ခြင်း,