မျက်မှောက်ခေတ်ဝဘ်ဆိုက်ဖွံ့ဖြိုးတိုးတက်မှုတွင် HTTP တောင်းဆိုမှုအမြောက်အများကိုကိုင်တွယ်ခြင်း, ဤအဆုံးတွင် Php သည် curl_multi_ * စီးရီးလုပ်ငန်းများကို curl_share_ * series များအနေဖြင့်ပိုမိုကောင်းမွန်စေရန် curl_share_ * စီးရီးများအကြားအရင်းအမြစ်များ (ဥပမာ DNS cache) ကိုဝေမျှနိုင်သည်။ ထိရောက်သောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုကိုရရှိရန် curl_multi_exec () နှင့် curl_share_init () ကိုမည်သို့ပေါင်းစပ်မည်ကိုဤဆောင်းပါးကမိတ်ဆက်ပေးလိမ့်မည်။
curl_multi_ * လုပ်ဆောင်ချက်များသည်တစ်ချိန်တည်းတွင်မစောင့်ဘဲ http တောင်းဆိုမှုများကိုတစ်ချိန်တည်းတွင်တစ်ချိန်တည်းပို့ရန်ခွင့်ပြုသည်။ ၎င်း၏အဓိကလုပ်ငန်းတော်သည်:
multi multi multi လက်ကိုင် ( curl_maulti_init ) ကိုစတင်ပါ။
Multi Multipi Multipi Multies မှလွယ်ကူသောလက်ကိုင်များ ( curl_init ) ထည့်ပါ။
curl_multi_exec () ကိုသုံးပါ။
curl_multi_select ( CPU Idle ကိုရှောင်ကြဉ်ပါ။
ရလဒ်များနှင့်အနီးကပ်အရင်းအမြစ်များကိုစုဆောင်း။
ဤနည်းလမ်းသည် Crawlers များ, Interface Agtaging, CDN Preheating စသည့်တစ်ချိန်တည်းတွင်လုပ်ဆောင်ရန်တောင်းဆိုမှုများအတွက်တောင်းဆိုမှုများအမြောက်အများလိုအပ်သည့်အခြေအနေများအတွက်အထူးသဖြင့်သင့်လျော်သည်။
curl_multi_ * သည်တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုပေးပို့နိုင်သည်, ဥပမာအားဖြင့် DNS ကိုသီးခြားစီအနေဖြင့် dns များအားလုံးကိုသီးခြားစီဖြေရှင်းရန်လိုအပ်သည်။
အဓိကအဆင့်များမှာ -
curl_share_init () ကိုမျှဝေထားသောအရာဝတ်ထုတစ်ခုဖန်တီးရန် () ကိုသုံးပါ။
curl_share_setopt () ကိုသုံးပါ (ဥပမာ curlshopt_share)
လွယ်ကူသောလက်ကိုင်တစ်ခုအားမျှဝေထားသောအရာဝတ်ထုတစ်ခုကိုတပ်ဆင်ရန် Curl_setop ($ ch, curlopt_share, $ share) ကို သုံးပါ။
တောင်းဆိုမှုပြီးဆုံးပြီးနောက်မျှဝေထားသောအရာဝတ်ထုကိုလွှတ်ပါ။
ဤတွင်အမှန်တကယ် runnable သော PHP ကုဒ်၏ဥပမာတစ်ခုမှာ -
<?php
// တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများလိုအပ်သည်URLစာရင်း
$urls = [
'https://m66.net/api/endpoint1',
'https://m66.net/api/endpoint2',
'https://m66.net/api/endpoint3',
'https://m66.net/api/endpoint4'
];
// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
// တစ် ဦး မျှဝေအရာဝတ်ထုကိုဖန်တီးပါ
$shareHandle = curl_share_init();
curl_share_setopt($shareHandle, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
// တစ်ခုချင်းစီကိုသိမ်းထားပါ easy handle
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SHARE, $shareHandle);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[$url] = $ch;
}
// တစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများဖျော်ဖြေ
$active = null;
do {
$mrc = curl_multi_exec($multiHandle, $active);
if ($mrc == CURLM_CALL_MULTI_PERFORM) {
continue;
}
curl_multi_select($multiHandle);
} while ($active && $mrc == CURLM_OK);
// ရလဒ်များကိုစုဆောင်း
$responses = [];
foreach ($curlHandles as $url => $ch) {
$responses[$url] = curl_multi_getcontent($ch);
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// ရုပ်သိမ်းခြင်း multi handle နှင့် share handle
curl_multi_close($multiHandle);
curl_share_close($shareHandle);
// ရလဒ်များကိုပုံနှိပ်
foreach ($responses as $url => $content) {
echo "Response from $url:\n";
echo $content . "\n\n";
}
? Curl_multi_ ကို တစ်ပြိုင်နက်တည်းတိုးတက်အောင်လုပ်ရန် * တောင်းဆိုမှုများကိုတစ်ပြိုင်နက်တည်းလုပ်ဆောင်ပါ။
? Dop-overhead ကိုသိမ်းရန် curl_share_ ကိုသုံးပါ ။ DNS cache ကဲ့သို့သောအရင်းအမြစ်များကိုမျှဝေခြင်းဖြင့်မတူကွဲပြားသောခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်တိုးတက်မှုများကိုရှောင်ပါ။
? သတိပြုရန် - တောင်းဆိုမှုပြီးဆုံးသွားသောအခါလွယ်ကူသောလက်ကိုင်တစ်ခုချင်းစီ, Multi Multi Multi Multipi နှင့် Share Shair Hander ကိုထုတ်လွှတ်ရန်သတိရပါ။
? curl_multi_select () နှင့်ပေါင်းစပ်ခြင်း () - CPU နေရာ 100% ကိုရှောင်ရှားရန်ကွန်ယက်လှုပ်ရှားမှုအတွက်စောင့်ပါ။
မြင့်မားသောတစ်ပြိုင်နက်တည်း interface ကိုစုစည်းခြင်းတောင်းဆိုမှုများ။
ကြီးမားသောစာမျက်နှာများသို့မဟုတ်ဖိုင်များ၏ကြီးမားသောနံပါတ်များကိုတွား။
ဝဘ်ဆိုက်စောင့်ကြည့်လေ့လာခြင်းနှင့်ကျန်းမာရေးစစ်ဆေးမှုများ။
CDN သို့မဟုတ် cache နွေး -up,
curl_multi_exec () နှင့် curl_share_init ကို အသုံးပြုခြင်းသည်စစ်မှန်တဲ့တစ်ပြိုင်နက်တည်းကိုအောင်မြင်နိုင်ရုံသာမက PHP ကိုပါ 0 င်သည့်ကွန်ယက်တောင်းဆိုမှုများကိုကိုင်တွယ်ရာတွင် PHP ကိုပိုမိုထိရောက်စွာလုပ်ဆောင်ခြင်းအားဖြင့် ထပ်မံ. လုပ်ခြင်းကိုလျှော့ချနိုင်သည်။
အကယ်. သင်သည်အမှန်တကယ် applications များတွင် optimization bottlenecks များကိုသင်ကြုံတွေ့ရပါက connection pooling, task scheduleing, rounch scheduing, ခြွင်းချက်ကိုင်တွယ်ခြင်းနှင့်အခြားနည်းလမ်းများကိုလည်းပိုမိုဖြေရှင်းရန်နှင့်အခြားနည်းလမ်းများကိုပိုမိုဖြေရှင်းနိုင်သည်။