လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> shared handles နှင့်အတူ https လက်ကိုင်ဖုန်း overhead ကိုလျှော့ချပါ

shared handles နှင့်အတူ https လက်ကိုင်ဖုန်း overhead ကိုလျှော့ချပါ

M66 2025-05-27

မြင့်မားသောတစ်ပြိုင်နက်တည်းကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါ HTTPS handshake ၏ overhead သည်စွမ်းဆောင်ရည်မြှင့်တင်မှုတစ်ခုဖြစ်သည်။ HTTPS တောင်းဆိုမှုတစ်ခုစီသည် tls handshake လုပ်ငန်းစဉ်တစ်ခုလိုအပ်သည်။ ကံကောင်းထောက်မစွာ, ဆံပင်ကောက်ကောက်သည် curl_share_init function ကိုထောက်ပံ့ပေးသည်။

curl_share_init ဆိုတာဘာလဲ။

curl_share_init သည် shared လက်ကိုင်ကိုစတင်ရန်အသုံးပြုသော curl extension တွင် function တစ်ခုဖြစ်သည်။ ဤမျှဝေထားသောလက်ကိုင်မှတစ်ဆင့်ကွဲပြားခြားနားသောဆံပင်ကောက်ကောက်, SSL session များ, cookies များစသဖြင့်သတင်းအချက်အလက်များကိုဝေမျှနိုင်သည်။ ဆိုလိုသည်မှာတောင်းဆိုမှုများသည်တူညီသောဒိုမိန်းအမည်တစ်ခုတည်းကိုသာဖော်ပြထားပါကအကန့်အသတ်နှင့် CPU စားသုံးမှုကိုအလွန်လျှော့ချနိုင်သည်။

အသုံးပြုမှုဥပမာ - https session ကိုမျှဝေပါ

HTTPS Session ကိုမျှဝေရန် Curl_share_init ကို အသုံးပြုသောလက်တွေ့ကျသောဥပမာကုဒ်တစ်ခုရှိသည်။

 <?php
// အဆိုပါ shared လက်ကိုင်ကိုအစပျိုး
$sh = curl_share_init();

// မျှဝေခြင်းရွေးချယ်စရာများကိုသတ်မှတ်ပါ,ဖွင့်လှစ် SSL အစည်းအဝေးဝေမျှခြင်း
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);

// မျိုးစုံတောင်းဆိုမှုများကိုပြင်ဆင်ပါ
$urls = [
    'https://m66.net/api/endpoint1',
    'https://m66.net/api/endpoint2',
    'https://m66.net/api/endpoint3',
];

foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SHARE, $sh); // app ကိုမျှဝေလက်ကိုင်

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch) . "\n";
    } else {
        echo "Response from {$url}:\n$response\n\n";
    }

    curl_close($ch);
}

// shared fandles ကိုရှင်းလင်း
curl_share_close($sh);
?>

ဤဥပမာတွင်တောင်းဆိုချက်သုံးခုသည် M66.net ဒိုမိန်းအမည်အောက်ရှိကွဲပြားသော interfaces များနှင့်ကွဲပြားခြားနားသော interfaces များနှင့်အားလုံးမျှဝေထားသောလက်ကိုင်ကိုမျှဝေပါ။ ဆိုလိုသည်မှာပထမ ဦး ဆုံးတောင်းဆိုချက်အတွက် HTTPS လက်ဆွဲနှုတ်ဆက်ခြင်းကိုပြီးဆုံးပြီးနောက်နောက်ဆက်တွဲတောင်းဆိုမှုများသည်တည်ဆဲအစည်းအဝေးများကိုပြန်လည်သုံးသပ်ပြီးလက်ဆွဲနှုတ်ဆက်ခြင်းလုပ်ငန်းစဉ်ကိုရှောင်ရှားနိုင်သည်။

မှတ်သားရန်အရာ

  1. Thread လုံခြုံမှု - PHP ကိုယ်တိုင်ကတစ် ဦး တည်းသောချည်နှောင်မှုဖြစ်သော်လည်းသင်သည်ချည်ပေါင်းစုံသောဝန်းကျင်တွင်မျှဝေထားသောလက်ကိုင်ကိုသုံးပါက,

  2. curlshopt_Unshare ကိုသုံးပါ ။ အချို့သောအချက်အလက်များ (ကွတ်ကီးသို့မဟုတ် dns cache cache ကဲ့သို့သော) unshare လုပ်ရန်လိုအပ်ပါကသင် curlshopt_Unshare ကို သုံးနိုင်သည်။

  3. တူညီသောအိမ်ရှင်၏ပြန်လည်အသုံးပြုမှုသာထိရောက်မှုရှိသည် - မျှဝေထားသော SSL session တစ်ခုသည်တည်းခိုခန်း (host) နှင့် port နှင့်အတူတူပင်ဖြစ်သည်။

နိဂုံးချုပ်အားဖြင့်

curl_share_init ကို အသုံးပြုခြင်းနှင့်လက်ကိုင်ဖွဲ့စည်းမှုကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့် HTTPS တောင်းဆိုမှုများကိုအမြောက်အများချသောအခါ TLS Handshake ၏ overhead စနစ်ကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ ၎င်းတွင် Microssvice ဆက်သွယ်ရေး, အဆင့်မြင့် API တောင်းဆိုမှုများ, အချက်အလက်များတွားသွားသည့်နှင့်အခြားအခြေအနေများတွင်သိသာထင်ရှားသည့်အကျိုးကျေးဇူးများရှိသည်။ စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်သာမကဆာဗာများနှင့်ဖောက်သည်များ၏အရင်းအမြစ်များကိုစားသုံးမှုကိုလျော့နည်းစေသည်။ သို့သော် PHP အဆင့်မြင့်မြင့်မားသောကွန်ယက်ပရိုဂရမ်တွင်အရေးကြီးသောကျွမ်းကျင်မှုကိုလည်းလျော့နည်းစေသည်။