ဆံပင်ကောက်ကောက် သည် PHP တွင်အလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သော HTTHRON HTTP တောင်းဆိုမှုများပြုလုပ်သောအခါဖြစ်သည်။ curl_multi_ * function ကို သုံး. developer များသည်စွမ်းဆောင်ရည်တိုးတက်စေရန်တစ်ချိန်တည်းတွင်တောင်းဆိုမှုများကိုစတင်နိုင်ပါသည်။ curl_multi_clock function ကို curl session များစွာကိုပိတ်ရန်အသုံးပြုသည်။ သို့သော်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်သောအခါတုံ့ပြန်မှုအမိန့်ကိုသင်မည်သို့သေချာစေသနည်း။ ဘာဖြစ်လို့လဲဆိုတော့ curl_multi_exec က တောင်းဆိုမှုများအတွက်တုန့်ပြန်မှုတွေကိုပြန်ပို့နိုင်ပြီးဒီတုန့်ပြန်မှုတွေကိုဖြည့်စွက်နိုင်တဲ့အမိန့်ကသူတို့တောင်းဆိုထားတဲ့အမိန့်နဲ့မတူဘူး။
ဤဆောင်းပါးသည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများ၏ရလဒ်များကို curl_multi_close ကို အသုံးပြုသောအခါတောင်းဆိုမှုများအစဉ်အဆက်ကိုမည်သို့သေချာစေနိုင်ကြောင်းအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
curl_multi_ * လုပ်ဆောင်ချက်များသည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများမှတစ်ဆင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်နည်းလမ်းတစ်ခုပေးသည်။ အသုံးအများဆုံးလုပ်ဆောင်ချက်များစွာတွင်အသုံးပြုသောလုပ်ဆောင်ချက်များပါဝင်သည်။
curl_multi_init () - ဆံပင်ကောက်ကောက်လက်ကိုင်ကို အစပြု. curl အရင်းအမြစ်ရေကန်တစ်ခုဖန်တီးပါ။
curl_multi_add_handle () : curl တောင်းဆိုမှုရေကန်ကိုဆံပင်ကောက်ကောက်ကိုထည့်သည်။
curl_multi_exec () : curl တောင်းဆိုမှုများကိုကွပ်မျက်ခံရ။
curl_multi_getcontent () - တောင်းဆိုမှုတစ်ခုစီ၏တုန့်ပြန်မှုအကြောင်းအရာကိုရယူပါ။
curl_multi_close () : curl တောင်းဆိုမှုရေကူးကန်ကိုပိတ်ပြီးအရင်းအမြစ်များကိုထုတ်ပေးပါ။
ဤလုပ်ဆောင်ချက်များသည်ပြတ်ပြတ်သားသားတောင်းဆိုမှုများကိုပြုလုပ်ရန်အတွက်အတူတကွအသုံးပြုသည်။ သို့သော်တုန့်ပြန်မှုပြီးစီးမှုအပြီးတွင်တောင်းဆိုမှုများအစဉ်အလာနှင့်ကွဲပြားနိုင်သည်။
ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်သောအခါ curl_mamulti_exec သည် နောက်ခံရှိတောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်အစပြုရန်နှင့်တောင်းဆိုမှုများအားလုံးကိုဖြည့်စွက်ရန်စောင့်ဆိုင်းလိမ့်မည်။ သို့သော်ဤတောင်းဆိုမှုများ၏ပြီးစီးချိန်သည်ခန့်မှန်းရခက်သည်, ထို့ကြောင့်သူတို့၏တုန့်ပြန်မှုအမိန့်ပြတ်တောက်သွားနိုင်သည်။
ရလဒ်များကိုအလွယ်တကူပြုလုပ်ရန်သေချာစေရန်တောင်းဆိုမှုနှင့်တုန့်ပြန်မှုအကြားမြေပုံဆိုင်ရာဆက်ဆံရေးကိုမှတ်တမ်းတင်ရန်ယန္တရားအချို့ကိုအသုံးပြုရန်လိုအပ်သည်။ အထူးသဖြင့် developer သည်တောင်းဆိုမှုတစ်ခုစီအတွက်ထူးခြားသောအမှတ်အသားတစ်ခုသတ်မှတ်ပြီးတုံ့ပြန်မှုကိုလက်ခံရရှိသည့်အခါဤအမှတ်အသားအရရလဒ်များကိုမှန်ကန်စွာစီထားနိုင်သည်။
ဤတွင်အကောင်အထည်ဖော်မှုဥပမာတစ်ခုဖြစ်သည်။
<?php
// တောင်းဆိုရန်URLစာရင်း
$urls = [
'https://gitbox.net/api/data1',
'https://gitbox.net/api/data2',
'https://gitbox.net/api/data3'
];
// ဖြစ်ပေါ်လာခြင်း cURL multi လက်ကိုင်
$mh = curl_multi_init();
// မေးမြန်းလက်ကိုင်数组
$curl_handles = [];
$responses = [];
$index = 0;
// တောင်းဆိုမှုတစ်ခုစီအတွက်ဖန်တီးပါ cURL လက်ကိုင်并添加到 multi လက်ကိုင်中
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// တစ်ခုချင်းစီကိုတောင်းဆိုမှု၏အညွှန်းကိန်းမှတ်တမ်းတင်,ဒါကြောင့်တုံ့ပြန်မှုနိုင်ရန်အတွက်လုပ်ငန်းများ၌နေကြသည်
curl_multi_add_handle($mh, $ch);
// 将လက်ကိုင်与索引关联
$curl_handles[(string)$ch] = $index++;
}
// အားလုံးလုပ်ဆောင် cURL မေးမြန်း
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh); // ဒေတာပြန်ရောက်သည်အထိ program ကိုစောင့်ပါစေ
} while ($running > 0);
// 读取每个မေးမြန်း的响应,并按မေးမြန်း的顺序保存结果
foreach ($curl_handles as $ch => $index) {
$response = curl_multi_getcontent($ch);
$responses[$index] = $response; // အညွှန်းကိန်းအားဖြင့်တုံ့ပြန်မှုကိုသိမ်းဆည်းပါ
curl_multi_remove_handle($mh, $ch); // 移除လက်ကိုင်
curl_close($ch); // 关闭每个လက်ကိုင်
}
// နောက်ဆုံးအနီးကပ် multi လက်ကိုင်
curl_multi_close($mh);
// output တုံ့ပြန်မှုရလဒ်,确保按照မေးမြန်း顺序输出
foreach ($responses as $response) {
echo $response . PHP_EOL;
}
?>
အထက်ဖော်ပြပါကုဒ်များတွင်ကျွန်ုပ်တို့သည် Curl Multi Multi ကိုလက်ကိုင် ပြုလုပ်. URL တစ်ခုစီအတွက်ဆံပင်ကောက်ကောက်ကိုဖန်တီးသည်။ တုံ့ပြန်မှုများကိုအလွယ်တကူပြန်လည်ရောက်ရှိရန်သေချာစေရန်ကျွန်ုပ်တို့သည် curl_handles ကို အသုံးပြုသည်။
တောင်းဆိုမှုများအားလုံးပြီးဆုံးသွားသောအခါကျွန်ုပ်တို့သည်ဤအပေါင်းအသင်းခင်းကျင်းမှုအားဖြင့်ဤအပေါင်းအသင်းခင်း ကျင်း မှုမှတစ်ဆင့်အညွှန်းကိန်းများအရတုံ့ပြန်မှုတစ်ခုစီကိုသိမ်းဆည်းထားသည်။
တောင်းဆိုမှုများအားလုံးကို curl_mamulti_exec ကို အသုံးပြု. အကောင်အထည်ဖော်သောအခါကွပ်မျက်ခံရဆဲသောတောင်းဆိုမှုများအရေအတွက်ကိုညွှန်ပြရန်အသုံးပြုသော parameter သည်အသုံးပြုသော အသုံးပြုမှု parameter သည်ကွပ်မျက်ခံရဆဲဖြစ်သည်။ curl_multi_select သည် တောင်းဆိုမှုမပြီးစီးမှီအချက်အလက်များမပြန်မလာမီမည်သည့်ဒေတာကိုမပြန်မရသောအခါ, CPU အရင်းအမြစ်များကိုမဖြုန်းတီးပါ။
နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည် curl_multi_remove_handle နှင့် curl_close အားလုံးကိုပိတ်ထားသည် ။
Associative Array ကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများပြုလုပ်သည့်အခါတုံ့ပြန်မှုရလဒ်များကိုတောင်းဆိုမှုများအရပြန်လာသည်။ PHP တွင်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများအတွက် curl_multi_ * လုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါ, အထူးသဖြင့် interfaces များထံမှတုံ့ပြန်မှုများကိုကိုင်တွယ်သောအခါအမိန့်ကိုထိန်းသိမ်းရန်အရေးကြီးသည်။ ဤဥပမာမှတစ်ဆင့် PHP တွင်ပြတ်တောင်းပြတ်တောင်းတောင်းဆိုမှုများကိုမည်သို့ပြုလုပ်ရမည်,