PHP တွင် ဆံပင်ကောက်ကောက် သည်အစွမ်းထက်သောကွန်ယက်တောင်းဆိုမှုကိရိယာတစ်ခုဖြစ်ပြီး curl_multi_ * လုပ်ဆောင်ချက်များသည်ကျွန်ုပ်တို့အားခွင့်ပြုသည်။ ၎င်းသည်စွမ်းဆောင်ရည်မြင့်မားသော interface ကိုစုစည်းခြင်း,
သို့သော် developer များစွာသည် curl_multi_Close () ကိုအသုံးပြုသောအခါသယံဇာတထုတ်လွှတ်မှုလုပ်ငန်းစဉ်ကိုမကြာခဏလျစ်လျူရှုလေ့ရှိသည်။ ဤဆောင်းပါးသည်စံသတ်မှတ်ချက်ကိုအဓိကလိုင်းအဖြစ်ယူသွားပါမည်။ curl_multi_init ကို curlti_close ကို curlti_close ၏ပြီးပြည့်စုံသောအသုံးပြုမှုကိုနားလည်လိမ့်မည်။
PHP မှပေးသော functions ၏ curl_multi_ * PHP မှပေးသောလုပ်ဆောင်ချက်များသည် တစ်ပြိုင်နက်တည်း curl လက်ကိုင်များကိုစီမံရန် ကိရိယာများဖြစ်သည်။ ၎င်းသည်ရိုးရာတစ်ခုတည်း curl တောင်းဆိုမှုနှင့်ကွဲပြားခြားနားသည်, ၎င်းသည်သင့်အားတစ်ချိန်တည်းတွင် HTTP တောင်းဆိုမှုများကိုစတင်ရန်လှုံ့ဆော်ပေးသည်။
ဤလုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်အောက်ဖော်ပြပါအဆင့်များကိုခွဲခြားနိုင်သည်။
Multi Multi Multi Multi Multi> Curl_multi_init ()
curl_mamulti_add_handle () curl_multi_add_handle (လွယ်ကူသောလက်ကိုင်) ထည့်ပါ။
တောင်းဆိုမှုများကို execute: curl_multi_exec () နှင့် curl_multi_select ()
တုံ့ပြန်မှုအကြောင်းအရာကိုရယူပါ။ curl_mamulti_getcontent ()
လွယ်ကူသောလက်ကိုင်ကိုဖယ်ရှားခြင်းနှင့်ပိတ်ပါ။ curl_multi_remove_handle () နှင့် curl_close ()
Multi Multi Multi Multi> Curl_Multi_Close ()
ဤတွင်ကျွန်ုပ်တို့သည်ပုံမှန် multi-cornes ကိုဖြစ်စဉ်တစ်ခုဖြစ်သည်ဟုယူဆပြီး URLs သုံးခုကိုတစ်ပြိုင်တည်းတောင်းခံရန်လိုအပ်သည်ဟုယူဆသည်။
<?php
// တောင်းဆိုရန် URL စာရင်း
$urls = [
"https://gitbox.net/api/service1",
"https://gitbox.net/api/service2",
"https://gitbox.net/api/service3"
];
// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
$curlHandles = [];
// 1. တစ်ခုချင်းစီသည် URL a curl easy handle နှင့်ထည့်ပါ multi handle အလယ်ပိုင်း
foreach ($urls as $i => $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[$i] = $ch;
}
// 2. ကရိယာတန်းဆာ multi မေးမြန်း
$active = null;
do {
$mrc = curl_multi_exec($multiHandle, $active);
// အင်တာနက်ကိုစောင့်ဆိုင်း I/O အဆင်သင့်ရ,ရေှာင်ရှား CPU အလွန်မြင့်မားသောထေို
if ($mrc == CURLM_OK) {
curl_multi_select($multiHandle);
}
} while ($active > 0 && $mrc == CURLM_OK);
// 3. အကြောင်းအရာနှင့်သန့်ရှင်းသောလက်ကိုင်များကိုရယူပါ
$responses = [];
foreach ($curlHandles as $i => $ch) {
// တုန့်ပြန်အကြောင်းအရာကိုရယူပါ
$responses[$i] = curl_multi_getcontent($ch);
// တစ်ခုတည်းဖယ်ရှားခြင်းနှင့်ပိတ်ပါ handle
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// 4. နောက်ဆုံးအနီးကပ် multi handle,အရင်းအမြစ်များကိုအခမဲ့
curl_multi_close($multiHandle);
// ရလဒ်ရလဒ်
foreach ($responses as $index => $body) {
echo "Response from URL #{$index}: \n";
echo $body . "\n\n";
}
curl_multi_close () သည် လွယ်ကူသော လက်ကိုင်ကိုချက်ချင်းမဖျက်ဆီးနိုင်သော်လည်း (သင်သူတို့ကိုဖယ်ရှားပစ်ရန်လိုအပ်သည်) သော်လည်းကောင်း, သင်ခေါ်ဆိုရန်မေ့နေပါကမှတ်ဉာဏ်ပေါက်ကြားမှုများသို့မဟုတ်နေရပ်ပြန်ရေးသော scriptes များကဲ့သို့သော descriptor absion များကိုဖြစ်စေနိုင်သည်။
အနှစ်ချုပ် - curl_multi_init ကို သုံးသောမည်သည့် script ကိုမဆို curl_multi_close () နှင့်အဆုံးသတ်ရမည်။
တောင်းဆိုခြင်းကိုပိတ်ဆို့ခြင်းနှင့်မှီဝဲခြင်း?
curl_multi_select () ကို မှန်ကန်စွာအသုံးပြုသည်ဆိုပါကစစ်ဆေးပါ။
curl_setopt (... , curlopt_rreturntransfer, စစ်မှန် ကြောင်းသေချာအောင်လုပ်ပါ။
မှတ်ဉာဏ်ယိုစိမ့်မှုသို့မဟုတ်ဆက်သွယ်မှုခြွင်းချက်?
curl_multi_remove_handle () နှင့် curl_close () ကိုတောင်းဆိုမှုတစ်ခုချင်းစီကိုတောင်းဆိုသည်။
curl_multi_close () နောက်ဆုံးတွင်ခေါ်?
curl_multi_ * ကွန်ယက်တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်သောအခါအလွန်ထိရောက်သောနည်းလမ်းများပေးသည်။ curl_multi_init () curlulti_close () ကို curlti_close () ကို curlti_close () ကို curlti_close () ကို curlti_close () ကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။
ဒီ "must" သုံးခုကိုသတိရပါ:
တောင်းဆိုမှုတစ်ခုချင်းစီကို Multi Matchies တွင်ထည့်သွင်းရမည်။
တောင်းဆိုမှုတစ်ခုစီကိုပြီးစီးပြီးနောက်ဖယ်ရှားပြီးပိတ်ထားရမည်။
နောက်ဆုံးတွင် curl_mamulti_close () ကို Multies Multipi Multipi Multipi ကိုအခမဲ့ပေးရမည်။
စံသတ်မှတ်ခြင်းလုပ်ငန်းစဉ်နှင့်အရင်းအမြစ်စီမံခန့်ခွဲမှုမှတစ်ဆင့်သင်၏ PHP တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများသည်ပိုမိုအားကောင်းမှုနှင့်ထိရောက်မှုရှိလိမ့်မည်။