မြင့်မားသောတစ်ပြိုင်နက်တည်းကွန်ယက်တောင်းဆိုမှုများအတွက် PHP ကိုအသုံးပြုသောအခါ HTTPS handshake ၏ overhead သည်စွမ်းဆောင်ရည်မြှင့်တင်မှုတစ်ခုဖြစ်သည်။ HTTPS တောင်းဆိုမှုတစ်ခုစီသည် tls handshake လုပ်ငန်းစဉ်တစ်ခုလိုအပ်သည်။ ကံကောင်းထောက်မစွာ, ဆံပင်ကောက်ကောက်သည် curl_share_init function ကိုထောက်ပံ့ပေးသည်။
curl_share_init သည် shared လက်ကိုင်ကိုစတင်ရန်အသုံးပြုသော curl extension တွင် function တစ်ခုဖြစ်သည်။ ဤမျှဝေထားသောလက်ကိုင်မှတစ်ဆင့်ကွဲပြားခြားနားသောဆံပင်ကောက်ကောက်, SSL session များ, cookies များစသဖြင့်သတင်းအချက်အလက်များကိုဝေမျှနိုင်သည်။ ဆိုလိုသည်မှာတောင်းဆိုမှုများသည်တူညီသောဒိုမိန်းအမည်တစ်ခုတည်းကိုသာဖော်ပြထားပါကအကန့်အသတ်နှင့် CPU စားသုံးမှုကိုအလွန်လျှော့ချနိုင်သည်။
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 လက်ဆွဲနှုတ်ဆက်ခြင်းကိုပြီးဆုံးပြီးနောက်နောက်ဆက်တွဲတောင်းဆိုမှုများသည်တည်ဆဲအစည်းအဝေးများကိုပြန်လည်သုံးသပ်ပြီးလက်ဆွဲနှုတ်ဆက်ခြင်းလုပ်ငန်းစဉ်ကိုရှောင်ရှားနိုင်သည်။
Thread လုံခြုံမှု - PHP ကိုယ်တိုင်ကတစ် ဦး တည်းသောချည်နှောင်မှုဖြစ်သော်လည်းသင်သည်ချည်ပေါင်းစုံသောဝန်းကျင်တွင်မျှဝေထားသောလက်ကိုင်ကိုသုံးပါက,
curlshopt_Unshare ကိုသုံးပါ ။ အချို့သောအချက်အလက်များ (ကွတ်ကီးသို့မဟုတ် dns cache cache ကဲ့သို့သော) unshare လုပ်ရန်လိုအပ်ပါကသင် curlshopt_Unshare ကို သုံးနိုင်သည်။
တူညီသောအိမ်ရှင်၏ပြန်လည်အသုံးပြုမှုသာထိရောက်မှုရှိသည် - မျှဝေထားသော SSL session တစ်ခုသည်တည်းခိုခန်း (host) နှင့် port နှင့်အတူတူပင်ဖြစ်သည်။
curl_share_init ကို အသုံးပြုခြင်းနှင့်လက်ကိုင်ဖွဲ့စည်းမှုကိုကျိုးကြောင်းဆီလျော်စွာအသုံးပြုခြင်းအားဖြင့် HTTPS တောင်းဆိုမှုများကိုအမြောက်အများချသောအခါ TLS Handshake ၏ overhead စနစ်ကိုထိထိရောက်ရောက်လျှော့ချနိုင်သည်။ ၎င်းတွင် Microssvice ဆက်သွယ်ရေး, အဆင့်မြင့် API တောင်းဆိုမှုများ, အချက်အလက်များတွားသွားသည့်နှင့်အခြားအခြေအနေများတွင်သိသာထင်ရှားသည့်အကျိုးကျေးဇူးများရှိသည်။ စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်သာမကဆာဗာများနှင့်ဖောက်သည်များ၏အရင်းအမြစ်များကိုစားသုံးမှုကိုလျော့နည်းစေသည်။ သို့သော် PHP အဆင့်မြင့်မြင့်မားသောကွန်ယက်ပရိုဂရမ်တွင်အရေးကြီးသောကျွမ်းကျင်မှုကိုလည်းလျော့နည်းစေသည်။