PHP, curl_multi_exec နှင့် curl_multi_info_read နှင့် curl_multi_info_read သည်တစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်နှင့်ဤတောင်းဆိုမှုများကိုအပြိုင်ဖြင့်ထိရောက်စွာကွပ်မျက်ရန်လိုလျှင်အလွန်လက်တွေ့ကျလုပ်ဆောင်မှုများဖြစ်သည်။ ဤဆောင်းပါးသည်ထိရောက်သောအပြိုင်တောင်းဆိုမှုများကိုရရှိရန်အတွက်ဤလုပ်ဆောင်မှုနှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြပြီးသတ်သတ်မှတ်မှတ်ကုဒ်များကိုဥပမာပေးသည်။
curl_mamulti_exec : ခုတ်ပြတ်လပ်မှုကိုအကောင်အထည်ဖော်ရန်ဆံပင်ကောက်ကောက်အမျိုးမျိုးကို execute လုပ်ရန်အသုံးပြုသည်။ ၎င်းသည်အပြိုင်တွင်တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်သည်။
curl_multi_info_read : ပြီးစီးခဲ့သောတောင်းဆိုမှုများနှင့်ပတ်သက်သောသတင်းအချက်အလက်များကိုရယူရန်နှင့်တောင်းဆိုမှုပြီးဆုံးလာခြင်းရှိမရှိကိုရှာဖွေတွေ့ရှိနိုင်သည်။
မျိုးစုံဆံပင်ကောက်ကောက်တောင်းဆိုမှုများကိုအစ (curl fandles) ကိုစတင်ပါ။
Multiplexed လက်ကိုင်တစ်ခုဖန်တီးပါ။
တစ် ဦး ချင်းစီတောင်းဆိုမှုများအားလုံးကို Multiplexed လက်ကိုင်သို့ထည့်ပါ။
တောင်းဆိုမှုများအားလုံးကိုစတင်လုပ်ဆောင်ရန် Curl_Multi_exec ကို ခေါ်ပါ။
curl_multi_info_read မှတဆင့်တောင်းဆိုမှုတစ်ခုပြီးစီးခြင်းရှိမရှိကိုစဉ်ဆက်မပြတ်စစ်ဆေးပါ။
ပြီးစီးတောင်းဆိုမှု၏ရလဒ်ဖြစ်စဉ်ကို။
အရင်းအမြစ်များကိုသန့်ရှင်းရေး။
<?php
// တောင်းဆိုရန်URLစာရင်း
$urls = [
'http://gitbox.net/api/endpoint1',
'http://gitbox.net/api/endpoint2',
'http://gitbox.net/api/endpoint3',
];
// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
$curlHandles = [];
// 1. တစ်ခုတည်းဖန်တီးပါcurlလက်ကိုင်,နှင့်ပူးပေါင်းပါmultiလက်ကိုင်
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // တိုက်ရိုက် output ကိုအစားပြန်လာရလဒ်များ
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[] = $ch;
}
// 2. တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
$running = null;
do {
// တောင်းဆိုမှုကို execute
curl_multi_exec($multiHandle, $running);
// မလုပ်မနေရမဟုတ်သော:တက်ကြွစွာဆက်သွယ်မှုကိုစောင့်ဆိုင်း,တားဆီးCPUအလွန်မြင့်မားသောထေို
curl_multi_select($multiHandle);
// 3. ပြီးစီးခဲ့တောင်းဆိုမှုရှိမရှိစစ်ဆေးပါ
while ($info = curl_multi_info_read($multiHandle)) {
if ($info['msg'] === CURLMSG_DONE) {
$handle = $info['handle'];
// အကြောင်းအရာရယူပါ
$content = curl_multi_getcontent($handle);
// ပြန်လည်ပြုပြင်ခြင်းအကြောင်းအရာပြုပြင်ခြင်း,ဥပမာအားဖြင့်ပုံနှိပ်ခြင်းသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်
echo "အပြည့်အဝတောင်းဆိုမှု,အကြောင်းအရာအရှည်:" . strlen($content) . "\n";
// 移除完成的လက်ကိုင်,အရင်းအမြစ်များကိုအခမဲ့
curl_multi_remove_handle($multiHandle, $handle);
curl_close($handle);
}
}
} while ($running > 0);
// 4. ရုပ်သိမ်းခြင်းmultiလက်ကိုင်
curl_multi_close($multiHandle);
?>
curl_multi_init () - Multiplexed လက်ကိုင်ကိုစတင်ပါ။
curl_mamulti_add_handle () - တစ် ဦး ချင်းစီကိုတောင်းဆိုထားသောကောက်ကောက်ကိုကိုင်ထားမှု Multi Multi Multi Matchi Multipi Matchi သို့ထည့်သည်။
curl_multi_exec () : တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ။
curl_multi_select () - CPU ၏ပျင်းရိခြင်းကိုရှောင်ရှားရန်တက်ကြွစွာဆက်သွယ်မှုကိုစောင့်ပါ။
curl_multi_info_read () - ပြီးစီးခြင်းတောင်းဆိုမှု၏သက်ဆိုင်ရာသတင်းအချက်အလက်များကိုဖတ်ပြီးတောင်းဆိုမှုပြီးဆုံးခြင်းရှိမရှိဆုံးဖြတ်သည်။
curl_multi_remove_handle () နှင့် curl_close ()) နှင့် curl_close () - မှတ်ဥာဏ်ယိုစိမ့်မှုများကိုရှောင်ရှားရန်အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ပါ။
တောင်းဆိုမှုများအားလုံးပြီးဆုံးသည်အထိကွင်းဆက် ( $ အပြေးသည် 0 ဖြစ်လာသည်) ။
အလွန်အကျွံဆာဗာဖိအား (သို့) system ြပည်မြစ်ပိတ်ဆို့မှုများကိုရှောင်ရှားရန်အပြိုင်တောင်းဆိုမှုများအရေအတွက်သည်ကြီးမားလွန်းခြင်းမပြုသင့်ပါ။
Curl_multi_Select () ပရိုဂရမ်ကို CPU အသုံးပြုမှုမှကာကွယ်ရန်စောင့်ဆိုင်းရန် () ကိုကြည့်ပါ။
ပြန်လာသောအကြောင်းအရာကိုပြန်လည်ပြုပြင်သည့်အခါတောင်းဆိုမှုကိုအောင်မြင်ရန်သေချာစေရန်အမှားစစ်ဆေးခြင်းကိုဂရုပြုပါ။
သင် post, header နှင့် authentication စသည့်ရှုပ်ထွေးသောတောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်ပါကသင်တစ် ဦး တည်းဆံပင်ကောက်ကောက်လက်ကိုင်ကိုအစပြုသည့်အခါသက်ဆိုင်ရာရွေးချယ်စရာများကိုသတ်မှတ်နိုင်သည်။