လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> curl_mamulti_close ကုဒ် optimization: မလိုအပ်သောခေါ်ဆိုမှုများကိုမည်သို့လျှော့ချရမည်နည်း

curl_mamulti_close ကုဒ် optimization: မလိုအပ်သောခေါ်ဆိုမှုများကိုမည်သို့လျှော့ချရမည်နည်း

gitbox 2025-05-12

Multi-cursiet processing အတွက် PHP ၏ ဆံပင် ကောက်ကောက်ကို သုံး. curl_multi_ * စီးရီးလုပ်ဆောင်ချက်များသည်အလွန်အရေးကြီးသည်, အထူးသဖြင့် curl_mamulti_close သည် အလွန်အရေးကြီးသည်။ သို့သော် developer များစွာသည် curl_multi_close_close ကို အမှန်တကယ်စီမံကိန်းများနှင့်မမှန်ကန်ကြောင်းခေါ်ဆိုလေ့ရှိပြီးစွမ်းဆောင်ရည်ပျက်စီးခြင်းနှင့်အရင်းအမြစ်များကိုပင်ဖြုန်းတီးခြင်းများဖြစ်ပေါ်စေသည်။ ဒါကြောင့်မလိုအပ်တဲ့ curl_multi_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 အရင်းအမြစ်များကိုထိန်းချုပ်နိုင်ပြီးဖန်ဆင်းခြင်းနှင့်ဖျက်ဆီးခြင်း၏အချိန်ကိုကျိုးကြောင်းဆင်ခြင်ရန်ဖြစ်သည်။ ဤတွင်အချို့သောလက်တွေ့ကျသောအကောင်းဆုံးအကြံပြုချက်များမှာ -

1 ။ Curl_multi_handle ကို ပြန်လည်အသုံးပြုပါ

ယုတ္တိနည်းအရခွင့်လွှတ်တော်ချိန်တွင် တိုင်းရင်းသားလူမျိုးများကို အချိန်တိုင်းပြန်လည်ဖြည့်ဆည်းပေးမည့်အစားတောင်းဆိုမှုများကိုစီမံခန့်ခွဲရန်လိုသည်။ သင်ကန ဦး အဆင့်တွင် 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);

?>

2 ။ အသေးအဖွဲတောင်းဆိုမှုတစ်ခုစီပြီးနောက်ချက်ချင်းပိတ်ခြင်းကိုရှောင်ပါ

များစွာသော developer များလေ့ကျင့်ခန်းများအစုအဝေးတစ်ခုချင်းစီပြီးဆုံးပြီးသောအရာတစ်ခုစီပြီးဆုံးပြီးနောက် curl_multi_close လေ့ရှိသည်။ ဤအရာသည်ပိုမိုကောင်းမွန်သော အရာများအားလုံးပြီးစီးပြီးနောက်တစ်ပုံစံလုံးကိုတစ်ပုံစံလုံးကိုပိတ်ထားရန် (သို့) ဗဟိုအစုအဝေး (တောင်းဆိုမှု 100 ၏အအုပ်စုများ) တွင်ဗဟိုပြုသည်။

3 ။ ဆက်သွယ်မှုရေကန်များသို့မဟုတ်စီမံခန့်ခွဲမှုသင်တန်းများကို Encapsatate လုပ်ရန်

သင်၏လျှောက်လွှာသည်တောင်းဆိုမှုများကိုစတင်ရန်လိုအပ်ပါက 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 ကိုပိုမိုအဆင်ပြေစေလိမ့်မည်။