PHP တွင် curl_mamulti သည်တစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများကိုမကြာခဏလုပ်ဆောင်ရန်အသုံးပြုသောအလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ တောင်းဆိုမှုတစ်ခုစီအတွက်သီးခြားဆက်သွယ်မှုတစ်ခုတည်ဆောက်ရန်မလိုဘဲကောက်ကောက်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းပြုလုပ်ရန်ခွင့်ပြုထားသည်, ကွန်ယက်တောင်းဆိုမှုများ၏ထိရောက်မှုကိုသိသိသာသာတိုးတက်စေသည်။ ယေဘုယျအားဖြင့် curl_multi သည်ပြင်ပ API ခေါ်ဆိုမှုမျိုးစုံနှင့်အချက်အလက်များကိုရယူခြင်းကိုရယူရန်လိုအပ်သည့်အခြေအနေမျိုးတွင်ကျယ်ပြန့်စွာအသုံးပြုသည်။ သို့သော်ဤတောင်းဆိုမှုများ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်မည်သို့တောင်းဆိုမှုများစွာပြုလုပ်သောအခါ developer များအတွက်ဘုံစိန်ခေါ်မှုတစ်ခုဖြစ်သည်။
ဤဆောင်းပါးသည် curl_upkeep () function ကိုအသုံးပြုခြင်းအားဖြင့် curl_multi တောင်းဆိုမှုများ၏စွမ်းဆောင်ရည်ကိုမည်သို့တိုးတက်အောင်လုပ်ရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
Curl_multi သည်သင်တောင်းဆိုမှုတစ်ခုချင်းစီကိုသီးခြားစီဖြည့်စွက်ရန်မစောင့်ဘဲ HTTP တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်ပေးရန်ခွင့်ပြုသည့် curl library မှပေးသောအင်္ဂါရပ်မှပေးသောအင်္ဂါရပ်တစ်ခုဖြစ်သည်။ developer များသည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကိုအကောင်အထည်ဖော်ရန်နှင့်ပရိုဂရမ်ကွပ်မျက်မှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ကူညီနိုင်သည်။
curl_upkeep () သည် Multi- တောင်းဆိုမှုပြုလုပ်နေစဉ်အရင်းအမြစ်စီမံခန့်ခွဲမှုများကိုပိုမိုကောင်းမွန်စေရန်အသုံးပြုသောစိတ်ကြိုက် PHP function ကိုအသုံးပြုသည်။ တောင်းဆိုမှုကိုကွပ်မျက်မှုတွင်ဆာဗာအရင်းအမြစ်များကိုရေရှည်နေထိုင်မှုကိုရှောင်ရှားနိုင်ရန်အတွက်စနစ်တည်ငြိမ်မှုကိုထိန်းသိမ်းရန်ဆံပင်ကောက်ကောက်ကိုပုံမှန်သန့်ရှင်းခြင်းနှင့်ပြန်လည်အသုံးပြုခြင်းတို့ကိုပုံမှန်သန့်ရှင်းခြင်းနှင့်ပြန်လည်အသုံးပြုနိုင်သည်။
ပထမ ဦး စွာ PHP ပတ်ဝန်းကျင်တွင် curl extension ကိုဖွင့်ထားကြောင်းသေချာပါစေ။ ထို့နောက် curl_mamulti မှတဆင့်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုကျွန်ုပ်တို့ပြသပါမည်။
// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$multi_handle = curl_multi_init();
// ဖြစ်ပေါ်လာခြင်း单个 curl လက်ကိုင်
$handles = [];
for ($i = 0; $i < 3; $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // ဒီမှာ URL ဆဲ m66.net
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 将လက်ကိုင်加入 multi
curl_multi_add_handle($multi_handle, $ch);
$handles[] = $ch;
}
// တောင်းဆိုမှုကို execute
do {
$multi_status = curl_multi_exec($multi_handle, $active);
} while ($active);
// ရုပ်သိမ်းခြင်း所有လက်ကိုင်
foreach ($handles as $ch) {
curl_multi_remove_handle($multi_handle, $ch);
curl_close($ch);
}
// ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multi_handle);
အထက်ပါကုဒ်သည် curl_mamulti သုံး. တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုသုံးခုကိုတစ်ပြိုင်နက်မည်သို့ပို့ရမည်ကိုပြသသည်။ URL ရှိဒိုမိန်းအမည်ကို M66.net ဖြင့်အစားထိုးထားကြောင်းသတိပြုပါ။
Curl_multi တောင်းဆိုမှုများကိုတိုးတက်စေရန်အတွက်ကျွန်ုပ်တို့သည်ပုံမှန်သန့်ရှင်းရေးနှင့်အရင်းအမြစ်စီမံခန့်ခွဲမှုများကိုပြုလုပ်ရန်လိုအပ်သည်။ curl_upkeep () function ၏ function သည်တောင်းဆိုမှုဖြစ်စဉ်တွင်ကုသမှုခံယူနိုင်မှုကိုထိန်းသိမ်းရန်,
function curl_upkeep($multi_handle, $handles) {
// ပုံမှန်ကွပ်မျက်ခံရ,释放掉已经完成的လက်ကိုင်
do {
$status = curl_multi_exec($multi_handle, $active);
// မည်သည့်တောင်းဆိုမှုကိုပြီးစီးခဲ့မရှိမရှိစစ်ဆေးပါ
while ($info = curl_multi_info_read($multi_handle)) {
if ($info['msg'] == CURLMSG_DONE) {
$ch = $info['handle'];
// တောင်းဆိုမှုကိုရလဒ်ရယူပါ
$response = curl_multi_getcontent($ch);
// ထုတ်ယူခြင်းအချက်အလက်များကိုထုတ်ယူခြင်း
echo "တုံ့ပြန်မှုဒေတာ: " . $response;
// ရုပ်သိမ်းခြင်း完成的လက်ကိုင်
curl_multi_remove_handle($multi_handle, $ch);
curl_close($ch);
}
}
// တောင်းဆိုမှုများ၏သေဒဏ်များ၏ကြိမ်နှုန်းကိုထိန်းချုပ်ပါ,အလွန်အကျွံအသုံးပြုမှုကိုတားဆီး CPU
usleep(10000); // 10 မီလီစက္ကန့်,အလွန်အမင်းမြင့်မားစွာရှောင်ကြဉ်ပါ CPU နေထိုင်ခြင်း
} while ($active); // Runtime မှာတောင်းဆိုမှုတစ်ခုရှိနေသေးသည့်အခါ,ဆက်လုပ်ရန်ဆက်လက်
}
curl_upkeep () function သည်အချိန်မီတောင်းဆိုမှုကိုပြီးစီးခဲ့သည်ဖြစ်စေ, ကွပ်မျက်မှုလုပ်ငန်းစဉ်အတွင်းစနစ်ဝန်ထုပ်ဝန်ပိုးကိုသင့်လျော်သော USLEEP () မဲဆန္ဒနယ်များကိုမကြာခဏဆိုသလိုအလွန်အကျွံ CPU အသုံးပြုမှုကိုရှောင်ရှားရန်တောင်းဆိုသည်။
ယခုကျွန်ုပ်တို့သည် curl_uplet () function ကို curl_multi နှင့်တွဲဖက်လုပ်ဆောင်ခြင်းကိုအသုံးပြုသည်။
// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$multi_handle = curl_multi_init();
// ဖြစ်ပေါ်လာခြင်း单个 curl လက်ကိုင်
$handles = [];
for ($i = 0; $i < 5; $i++) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // အစားထိုးလိုက်ပါ m66.net ဒိုမိန်းအမည်
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 将လက်ကိုင်加入 multi
curl_multi_add_handle($multi_handle, $ch);
$handles[] = $ch;
}
// တယ်လီဖုန်းဆက်ခြင်း upkeep ပုံမှန်သန့်ရှင်းရေးနှင့်လုပ်ဆောင်ချက်များကိုအရင်းအမြစ်စီမံခန့်ခွဲမှု
curl_upkeep($multi_handle, $handles);
// ရုပ်သိမ်းခြင်း multi လက်ကိုင်
curl_multi_close($multi_handle);
ဤဥပမာတွင် curl_upkeep () function သည်ပြီးပြည့်စုံသောအရင်းအမြစ်များကိုဖြိုခွဲနေစဉ်အတွင်းတောင်းဆိုမှုများအားလုံးကိုချောချောမွေ့မွေ့ချောမွေ့စေရန်သေချာစေရန်တောင်းဆိုမှုတစ်ခုစီ၏အခြေအနေကိုပုံမှန်စစ်ဆေးသည်။
Curl_upkeep () ကို အသုံးပြု. curl_multi တောင်းဆိုမှုများကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်, မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုလျှော့ချနိုင်သည်။ ထို့အပြင်ပြီးစီးခဲ့သောဆံပင်ကောက်ကောက်လက်ကိုင်များကိုပုံမှန်သန့်ရှင်းရေးပြုလုပ်ခြင်းဖြင့်ပရိုဂရမ်များသည်တောင်းဆိုမှုများနှင့်စနစ်အရင်းအမြစ်များကိုပိုမိုထိရောက်စွာစီမံနိုင်သည်။