ခေတ်သစ်ရှေ့တန်းတွင်ဖွံ့ဖြိုးတိုးတက်မှုတွင် JavaScript ၏ ကတိတော်သည် asynchronous တောင်းဆိုမှုများစွာ၏တစ်ပြိုင်နက်တည်းကွပ်မျက်မှုများကိုကိုင်တွယ်ရန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်စတင်ရန်ခွင့်ပြုရန်, နောက်ဆက်တွဲယုတ္တိဗေဒကိုမပြုလုပ်မီတောင်းဆိုမှုများအားလုံးကိုစောင့်ဆိုင်းရန်စောင့်ဆိုင်းရန်ခွင့်ပြုသည်။ ဆာဗာဘေးထွက်ဘာသာစကားတစ်ခုအနေဖြင့် PHP တွင်တိုက်ရိုက်ကတိတော်ယန္တရားမရှိပါကကျွန်ုပ်တို့သည် curl_multi စီးရီးလုပ်ငန်းများမှတဆင့်အလားတူတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုအပြောင်းအလဲများကိုအကောင်အထည်ဖော်နိုင်သည်။ ဤဆောင်းပါးသည် curlulti_info_read ကို မည်သို့အသုံးပြုရမည်ကိုအဓိကထားကြောင်း ကတိကဝတ် နှင့်ဆင်တူသည်။
သာမန် curl_exec သည်ထပ်တူပြုခြင်းကိုဆိုလိုသည်။ ဆိုလိုသည်မှာတောင်းဆိုမှုတစ်ခုစီသည်နောက်တစ်ဆင့်ကိုဆက်လက်မလုပ်ဆောင်မီရလဒ်ကိုပြန်လာရန်စောင့်ဆိုင်းရန်လိုအပ်သည်။ ပေးပို့ရန်တောင်းဆိုမှုများစွာရှိပါက sequential execution ထိရောက်မှုသည်အလွန်မတတ်နိုင်ပါ။ curl_multi သည် ကျွန်ုပ်တို့အားတစ်ချိန်တည်းတွင်တောင်းဆိုမှုများကိုစတင်ရန်ခွင့်ပြုသည်။ ထို့နောက်စွမ်းဆောင်ရည်တိုးတက်စေရန်တစ်ပြိုင်တည်းလုပ်ဆောင်သည်။
မျိုးစုံလွတ်လပ်သော curl လက်ကိုင် ( curl_init ) ကိုဖန်တီးပါ။
ဤလက်ကိုင်များကို curl_multi လက်ကိုင်သို့ထည့်ပါ။
တောင်းဆိုမှုများအားလုံးကို execute လုပ်ရန် curl_multi_exec loop ကိုသုံးပါ။
curl_mamulti_info_read မှတဆင့်ပြီးပြည့်စုံသောတောင်းဆိုချက်အချက်အလက်ကိုရယူပါ။
ပြီးစီးရန်လက်ကိုင်ကိုပိတ်ပြီးရလဒ်ကိုသိမ်းဆည်းပါ။
တောင်းဆိုမှုများအားလုံးကိုဖြည့ ် စွက်ရန်စောင့်ဆိုင်းပါ။
အောက်ဖော်ပြပါနမူနာကုဒ်သည် URLs မျိုးစုံကိုတစ်ပြိုင်နက်တည်းတောင်းဆိုခြင်းနှင့်တောင်းဆိုမှုများအားလုံးပြီးဆုံးပြီးနောက်တစ်ပုံစံတည်းကိုတူညီစွာလုပ်ဆောင်ရမည်ကိုပြသသည်။ ဥပမာရှိ URL domains များကို M66.net ဖြင့်အစားထိုးသည်။
<?php
// တောင်းဆိုရန်URLစာရင်း
$urls = [
'https://m66.net/api/user',
'https://m66.net/api/order',
'https://m66.net/api/product',
];
// ဖြစ်ပေါ်လာခြင်း curl_multi လက်ကိုင်
$mh = curl_multi_init();
$handles = [];
// ဖြစ်ပေါ်လာခြင်း所有မေးမြန်းလက်ကိုင်并加入 multi လက်ကိုင်
foreach ($urls as $key => $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// သင်၏လိုအပ်ချက်များနှင့်အညီချိန်ညှိရန်အချိန်ကုန်ခြင်းနှင့်အခြားရွေးချယ်စရာများကိုသတ်မှတ်ပါ
curl_multi_add_handle($mh, $ch);
$handles[$key] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
curl_multi_exec($mh, $running);
// တက်ကြွစွာဆက်သွယ်မှုကိုစောင့်ဆိုင်း,ထိရောက်စွာလျှော့ချCPUအသုံးပြုမှုနှုန်း
curl_multi_select($mh);
// ပြီးပြည့်စုံသောတောင်းဆိုမှုကိုဖတ်ပါ
while ($info = curl_multi_info_read($mh)) {
if ($info['msg'] == CURLMSG_DONE) {
// 找出အပြီးသတ်မေးမြန်း的လက်ကိုင်
$finishedHandle = $info['handle'];
// သက်ဆိုင်ရာတ ဦး တည်းကိုရှာပါ key
$key = array_search($finishedHandle, $handles, true);
// အကြောင်းအရာနှင့် status ကို codes တွေကိုရယူပါ
$content = curl_multi_getcontent($finishedHandle);
$httpCode = curl_getinfo($finishedHandle, CURLINFO_HTTP_CODE);
echo "မေးမြန်း {$urls[$key]} အပြီးသတ်,HTTPအခြေအနေကုဒ်: {$httpCode}\n";
echo "အကြောင်းအရာအရှည်: " . strlen($content) . " ဒရယ်\n\n";
// 关闭并移除已经အပြီးသတ်的လက်ကိုင်
curl_multi_remove_handle($mh, $finishedHandle);
curl_close($finishedHandle);
// 将对应လက်ကိုင်置空,အဆင်ပြေနောက်ဆက်တွဲတရားသဖြင့်စီရင်
unset($handles[$key]);
}
}
} while ($running > 0);
curl_multi_close($mh);
echo "所有မေးမြန်း均已အပြီးသတ်。\n";
curl_multi_init () သည် Multi-Yours တောင်းဆိုခြင်းအပြောင်းအလဲအတွက်လက်ကိုင်ကိုဖန်တီးသည်။
curl_init တစ်ခုချင်းစီသည်သီးခြားတောင်းဆိုမှုကိုဖန်တီးပေးပြီး configuration ပြီးနောက် Multi-cursetire ကိုပေါင်းထည့်သည်။
တောင်းဆိုမှုအားလုံးပြီးဆုံးသည်အထိဖုန်းခေါ်ဆိုရန်တောင်းဆိုရန်တောင်းဆိုမှုကို curl_multi_exec () နှင့် loop ကိုစတင်ပါ။
curl_multi_seselect () CPU အသုံးပြုမှုကိုကာကွယ်ရန် () ကိုသုံးပါ။
curl_multi_info_read () ကတိတော်၏ ပြန် မှုနှင့်ဆင်တူပြီးစီးသောတောင်းဆိုချက်အချက်အလက်များကိုပြန်ပို့သည်။
အရင်းအမြစ်များကိုဖြုန်းတီးခြင်းမှရှောင်ရှားရန်တောင်းဆိုမှုပြီးဆုံးသွားသောအခါ,
အထက်ပါဖြစ်စဉ်ကိုမှတစ်ဆင့်တောင်းဆိုမှုများအားလုံးသည်တစ်ပြိုင်တည်းနှင့်ပြီးစီးပြီးနောက်ပြီးစီးပြီးနောက်တစ်ပုံစံတည်းလုပ်ဆောင်ခြင်းနှင့် ပြီးဆုံးခြင်း နှင့်ဆင်တူသည်။
PHP တွင်ဇာတိကတိတော်စနစ်မရှိပေမယ့် curl_multi စီးရီး functions, အထူးသဖြင့် curl_mami_info_read ကို အသုံးပြု. တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုစီမံခန့်ခွဲမှုနှင့်ရလဒ်ပြုပြင်ခြင်းများကိုအပြည့်အဝအကောင်အထည်ဖော်နိုင်သည်။ ဤနည်းလမ်းဖြင့် PHP scripts ၏စွမ်းဆောင်ရည်သည် Multi-interface ခေါ်ဆိုမှုများကိုအကောင်အထည်ဖော်သည့်အခါ PHP scripts ၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စွာတိုးတက်စေနိုင်သည်။
ဤဥပမာသည် PHP တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုနားလည်ရန်ကူညီလိမ့်မည်ဟုမျှော်လင့်ပါသည်။