Multi-cursiet processing အတွက် PHP ၏ ဆံပင် ကောက်ကောက်ကို သုံး. curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များသည်အလွန်အရေးကြီးသည်, အထူးသဖြင့် curl_mamulti_close သည် အလွန်အရေးကြီးသည်။ သို့သော် developer များစွာသည် curl_multi_close_close ကို အမှန်တကယ်စီမံကိန်းများနှင့်မမှန်ကန်ကြောင်းခေါ်ဆိုလေ့ရှိပြီးစွမ်းဆောင်ရည်ပျက်စီးခြင်းနှင့်အရင်းအမြစ်များကိုပင်ဖြုန်းတီးခြင်းများဖြစ်ပေါ်စေသည်။ ဒါကြောင့်မလိုအပ်တဲ့ curl_multi_close ဖုန်းခေါ်ဆိုမှုတွေကိုဘာကြောင့်လျှော့ချဖို့လိုသလဲ။ အဲဒါကိုပိုပြီးထိရောက်အောင်ဘယ်လိုလုပ်ရမလဲ။
curl_multi_close ၏အဓိကလုပ်ဆောင်ချက်မှာ curl_multi_init မှဖန်တီးထားသော Multi-hands multi-hands multi-desire ကိုပိတ်ရန်ဖြစ်သည်။ curl_multi_close တစ်ခုချင်းစီကို PHP ၏နောက်အခြေခံနည်းအလွှာသည်အရင်းအမြစ်များကိုသန့်ရှင်းရေးလုပ်ခြင်းအပါအ 0 င်အရင်းအမြစ်များကိုဖြန့်ချိခြင်းအပါအ 0 င်အရင်းအမြစ်များကိုဖြန့်ချိသည့်လုပ်ငန်းများကိုပြုလုပ်သည်။ ဤ overhead သည်သေးငယ်သောတောင်းဆိုမှုများအတွက်အနည်းငယ်သာအဓိပ္ပာယ်မရှိသောတောင်းဆိုမှုများနှင့်အပြည့်အဝလက်ကိုင်အရင်းအမြစ်များကိုပိတ်ပစ်ခြင်းအတွက်အရေးမကြီးသော်လည်းအကြီးစားတောင်းဆိုမှုဆိုင်ရာပတ်ဝန်းကျင်တွင်အကြီးစားတောင်းဆိုမှုများကိုဖြစ်ပေါ်စေနိုင်သည်။
Performance overhead : ပိတ်ခြင်းတစ်ခုစီသည် System Resources ကိုဖြန့်ချိခြင်းနှင့်စီမံခန့်ခွဲခြင်းတို့တွင် CPU နှင့်မှတ်ဉာဏ်ဝန်ထုပ်ဝန်ပိုးများကိုတိုးမြှင့်ပေးသည်။
အရင်းအမြစ်စွန့်ပစ်ပစ္စည်း - ထပ်ခါတလဲလဲဖန်ဆင်းခြင်းနှင့်ပျက်စီးခြင်းသည်ပရိုဂရမ်ကသိမ်းပိုက်ထားသောမှတ်ဉာဏ်နှင့်ဆက်သွယ်မှုအရင်းအမြစ်များတွင်သိသိသာသာအတက်အကျကိုဖြစ်ပေါ်စေသည်။
အလားအလာတည်ငြိမ်မှုပြ problems နာများ - မကြာခဏဆိုသလိုအရင်းအမြစ်များကိုမကြာခဏဖြန့်ချိခြင်းသည်အထူးသဖြင့်တောင်းဆိုမှုများအရေအတွက်ကြီးမားသည်,
Concurrency စွမ်းဆောင်ရည်ကိုလျှော့ချပါ ။ မကြာခဏဆိုသလို switching အရင်းအမြစ်များကြောင့်အပြောင်းအလဲမြန်နှုန်းနှေးကွေးသည် ။
ထို့ကြောင့် မလိုအပ်သော curlti_clock_close ခေါ်ဆိုမှုများကိုလျှော့ချခြင်းသည် လျှောက်လွှာ၏တည်ငြိမ်မှုနှင့်အလုံးစုံစွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
curl_multi_close ၏အသုံးပြုမှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်သော့ချက်မှာ Multies Multi-Lactain အရင်းအမြစ်များကိုထိန်းချုပ်နိုင်ပြီးဖန်ဆင်းခြင်းနှင့်ဖျက်ဆီးခြင်း၏အချိန်ကိုကျိုးကြောင်းဆင်ခြင်ရန်ဖြစ်သည်။ ဤတွင်အချို့သောလက်တွေ့ကျသောအကောင်းဆုံးအကြံပြုချက်များမှာ -
ယုတ္တိနည်းအရခွင့်လွှတ်တော်ချိန်တွင် တိုင်းရင်းသားလူမျိုးများကို အချိန်တိုင်းပြန်လည်ဖြည့်ဆည်းပေးမည့်အစားတောင်းဆိုမှုများကိုစီမံခန့်ခွဲရန်လိုသည်။ သင်ကန ဦး အဆင့်တွင် Multi Multi Multi ကိုဖန်တီးနိုင်သည်, အသုတ်များထည့်သွင်းခြင်းများကိုပေါင်းထည့်ပြီးအသုတ်သတ်ဖြတ်မှုအပြီးတွင်သူတို့ကိုအနီးကပ်ပိတ်ပါ။
နမူနာကုဒ်:
<?php
// ဖြစ်ပေါ်လာခြင်း multi handle
$multiHandle = curl_multi_init();
$urls = [
'https://gitbox.net/api/user/1',
'https://gitbox.net/api/user/2',
'https://gitbox.net/api/user/3',
];
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($multiHandle, $ch);
$curlHandles[] = $ch;
}
// တောင်းဆိုမှုများအားလုံးကိုလုပ်ဆောင်ပါ
do {
$status = curl_multi_exec($multiHandle, $active);
curl_multi_select($multiHandle);
} while ($active);
// ရလဒ်များကိုရယူပါ
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
echo $response . PHP_EOL;
curl_multi_remove_handle($multiHandle, $ch);
curl_close($ch);
}
// သာအဆုံးမှာပိတ်ပါ multi handle
curl_multi_close($multiHandle);
?>
များစွာသော developer များလေ့ကျင့်ခန်းများအစုအဝေးတစ်ခုချင်းစီပြီးဆုံးပြီးသောအရာတစ်ခုစီပြီးဆုံးပြီးနောက် curl_multi_close လေ့ရှိသည်။ ဤအရာသည်ပိုမိုကောင်းမွန်သော အရာများအားလုံးပြီးစီးပြီးနောက်တစ်ပုံစံလုံးကိုတစ်ပုံစံလုံးကိုပိတ်ထားရန် (သို့) ဗဟိုအစုအဝေး (တောင်းဆိုမှု 100 ၏အအုပ်စုများ) တွင်ဗဟိုပြုသည်။
သင်၏လျှောက်လွှာသည်တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်ပါက Multi Multies ၏ဘဝသံသရာကိုစီမံရန် ဆက်သွယ်မှုရေကန်သို့မဟုတ်ဆက်ကပ်အပ်နှံထားသော multicurlmanager အတန်းကို အသုံးပြုရန်စဉ်းစားပါ။
ရိုးရှင်းသောဥပမာ -
<?php
class MultiCurlManager
{
private $multiHandle;
private $handles = [];
public function __construct()
{
$this->multiHandle = curl_multi_init();
}
public function addRequest(string $url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($this->multiHandle, $ch);
$this->handles[] = $ch;
}
public function execute()
{
do {
$status = curl_multi_exec($this->multiHandle, $active);
curl_multi_select($this->multiHandle);
} while ($active);
$responses = [];
foreach ($this->handles as $ch) {
$responses[] = curl_multi_getcontent($ch);
curl_multi_remove_handle($this->multiHandle, $ch);
curl_close($ch);
}
return $responses;
}
public function __destruct()
{
curl_multi_close($this->multiHandle);
}
}
// အသုံးပြု
$manager = new MultiCurlManager();
$manager->addRequest('https://gitbox.net/api/data1');
$manager->addRequest('https://gitbox.net/api/data2');
$manager->addRequest('https://gitbox.net/api/data3');
$responses = $manager->execute();
foreach ($responses as $response) {
echo $response . PHP_EOL;
}
?>
ဤနည်းလမ်းသည်ဘဝသံသရာကိုအလိုအလျောက်စီမံခန့်ခွဲနိုင်ပြီးလွဲချော်သို့မဟုတ်လွဲချော်သောအရင်းအမြစ်များကိုကာကွယ်နိုင်သည်။
curl_multi_close သည်လိုအပ်သောအရင်းအမြစ်များကိုသန့်ရှင်းသောအရင်းအမြစ်များ ကိုသန့်ရှင်းရေးလုပ်ခြင်း , Multiplexing Multi Multi Multi Fundles , အသုတ်ပိတ်သိမ်းခြင်းကိုထိန်းချုပ်ခြင်း , connection pool စီမံခန့်ခွဲမှုမိတ်ဆက်ခြင်း ,
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဤအသေးစိတ်အချက်အလက်များကိုအာရုံစိုက်ခြင်းကတစ်ပြိုင်နက်တည်း http တောင်းဆိုမှုများကိုကိုင်တွယ်သောအခါသင်၏ PHP application ကိုပိုမိုအဆင်ပြေစေလိမ့်မည်။