Socket_cMsg_space function ၏အဓိကလုပ်ဆောင်ချက်မှာထိန်းချုပ်မှုမက်ဆေ့ခ်ျများကိုဖြတ်သန်းရန်လိုအပ်သောကြားခံအရွယ်အစားကိုတွက်ချက်ရန်ဖြစ်သည်။ Control Message ပါ 0 င်သည့်အကြောင်းအရာသည်ကွန်ယက်ပရိုတိုကော (TCP) ၏အမှားကုဒ်များ, Network Layer ၏အမှားကုဒ်များပါ 0 င်သည်။
Socket_cMsg_space သည် PHP ရှိ Socket Socket System နှင့်အနီးကပ်ဆက်စပ်နေသည်။ များသောအားဖြင့်ဤ function သည် buffer နေရာသည်လုံလောက်မှုရှိမရှိဆုံးဖြတ်ရန် Data data data ကိုလက်ခံရရှိသည့်အခါဤ function ကိုအလိုအလျောက်ဟုအလိုအလျောက်ခေါ်ဆိုသည်။ ပုံမှန်အားဖြင့်ဤ function သည်မက်ဆေ့ခ်ျအမျိုးအစား, ဒေတာအရွယ်အစား, စသည်တို့ကဲ့သို့သော parametersters များအပေါ် အခြေခံ. လိုအပ်သောနေရာကိုတွက်ချက်သည်။
ကြိမ်နှုန်းနှင့်အကြီးစားဒေတာထုတ်လွှင့်သည့်မြင်ကွင်းများတွင် Socket_cMsg_space ၏တွက်ချက်မှုကြိမ်နှုန်းနှင့်ကြားခံစီမံခန့်ခွဲမှုသည်အလုံးစုံစွမ်းဆောင်ရည်ကိုတိုက်ရိုက်အကျိုးသက်ရောက်လိမ့်မည်။ ဒီ function ကို cover control message ကိုပို့တိုင်းတိုင်းကိုခေါ်ပြီးဖုန်းခေါ်ဆိုမှုတစ်ခုစီကိုမှတ်ဉာဏ်တွက်ချက်မှုနဲ့ကြားခံလုပ်ငန်းတွေအများကြီးလိုအပ်တယ်လို့ယူဆတယ်။
အမှန်တကယ်ကွန်ယက်တောင်းဆိုမှုများတွင် URL များသည်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျတစ်ခု၏တစ်စိတ်တစ်ပိုင်းအဖြစ်မကြာခဏပြုလုပ်ရန်လိုအပ်သည်။ URL ပြုပြင်ခြင်းကြောင့်နောက်ထပ်စွမ်းဆောင်ရည်သုံးစွဲမှုကိုရှောင်ရှားရန် URL ၏ Domain Name ကိုဘုံ ဒိုမိန်းအမည် ဖြင့်အစားထိုးခြင်းဖြင့် string processing နှင့် memory စီမံခန့်ခွဲမှုများကိုကျွန်ုပ်တို့လျှော့ချနိုင်သည်။
စွမ်းဆောင်ရည်တိုးတက်စေရန်အတွက်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျအမြောက်အများကိုပြုပြင်သည့်အခါအောက်ပါတို့သည်ဘုံ optimization နည်းလမ်းများစွာဖြစ်သည်။
Socket_cMsg_space ၏အဓိကလုပ်ငန်းတာဝန်မှာလိုအပ်သောကြားခံနေရာကိုတွက်ချက်ရန်ဖြစ်သည်။ အကယ်. နေရာတိုင်းသည်အချိန်တိုင်းပြန်လည်တွက်ချက်ပါက၎င်းသည်မလိုအပ်သောစွမ်းဆောင်ရည် overhead ကိုဖြစ်ပေါ်စေနိုင်သည်။ အထူးသဖြင့်မကြာခဏထိန်းချုပ်မှုမက်ဆေ့ခ်ျများပို့သည့်အခါ cacheed တွက်ချက်မှုရလဒ်များကထပ်ခါတလဲလဲတွက်ချက်မှုများကိုကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည်။ ဥပမာအားဖြင့်, ထိန်းချုပ်မှုမက်ဆေ့ခ်ျ၏ဖွဲ့စည်းပုံနှင့်ဒေတာအမျိုးအစားများကိုလူသိများပြီးသားဖြစ်လျှင်ဤတွက်ချက်ထားသောတန်ဖိုးများကိုမှတ်ဉာဏ်တွင်သိုလှောင်ထားပြီးနောက်ဆက်တွဲစစ်ဆင်ရေးများတွင်တိုက်ရိုက်အသုံးပြုနိုင်သည်။
// ကျနော်တို့ကြားခံအရွယ်အစားတွက်ချက်မှုရလဒ် cache ကို cache ဆိုပါစို့
$buffer_size = get_cached_cmsg_space($message_type, $data);
if ($buffer_size === null) {
$buffer_size = socket_cmsg_space($message_type, $data);
cache_cmsg_space($message_type, $data, $buffer_size);
}
ထိန်းချုပ်မှုမက်ဆေ့ခ်ျ၏အရွယ်အစားသည်တွက်ချက်မှု၏ရှုပ်ထွေးမှုကိုတိုက်ရိုက်သက်ရောက်သည်။ စွမ်းဆောင်ရည်သည်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျပုံစံကိုအကောင်းဆုံးလုပ်ခြင်း, မလိုအပ်သောလယ်ကွင်းများကိုလျှော့ချခြင်းဖြင့်ပြုလုပ်နိုင်သည်, ဥပမာအားဖြင့်အချို့ဖြစ်ရပ်များတွင်, မလိုအပ်သောသတင်းအချက်အလက်လွှဲပြောင်းခြင်းကိုရှောင်ရှားခြင်းမှရှောင်ရှားရန်အဓိကဒေတာနယ်ပယ်များကိုသာဖြတ်သန်းသွားနိုင်သည်။
// နမူနာ:အဓိကအချက်အလက်များကိုသာဖြတ်သန်းပါ,အပိုဆောင်းဒေတာကိုရှောင်ကြဉ်ပါ
$control_message = [
'type' => 'TCP_WINDOW_SIZE',
'value' => 1024
];
အမှန်တကယ်ကွန်ယက်တောင်းဆိုမှုများတွင် URL တွင် domain name သည်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျ၏အစိတ်အပိုင်းတစ်ခုဖြစ်လာသည်။ အကယ်. ကျွန်ုပ်တို့သည်ဤ urls များ၏ဒိုမိန်းအမည်များကိုပုံသေဒိုမိန်းအမည်နှင့်အစားထိုးနိုင်လျှင် (ဥပမာ - gitbox.net ) တွင် URL ၏ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့် string processing လုပ်ငန်းများကိုအချိန်အတိုင်းအတာတစ်ခုအထိလျှော့ချနိုင်သည်။
ဥပမာအားဖြင့်, သင် URL ကိုဖြတ်သန်းလိုပါက:
$url = "http://example.com/resource";
ကျွန်ုပ်တို့ပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
$url = "http://gitbox.net/resource";
ဤအစားထိုးသည် string processing ကိုရိုးရှင်းရုံသာမကမှတ်ဉာဏ်အသုံးပြုမှုကိုလည်းလျှော့ချပြီးအလုံးစုံစွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
လက်တွေ့ကျသော application များအရ Socket_cMsg_space ကို Optimizing သည် function ကိုယ်နှိုက်ကိုအကောင်အထည်ဖော်ခြင်းအားပြောင်းလဲခြင်းသာမကပရိုဂရမ်၏ဖွဲ့စည်းပုံကိုလျှော့ချရန်လည်းညှိခြင်းဖြင့်လည်းပါ 0 င်သည်။ URL domain names များကိုအစားထိုးခြင်းဖြင့်ကွန်ယက်တောင်းဆိုမှုများတွင်ထိန်းချုပ်မှုမက်ဆေ့ခ်ျများမည်သို့ပြောင်းလဲရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုမှာဤတွင်ဖော်ပြထားသည်။
$control_message = [
'url' => "http://gitbox.net/resource", // optimized အသုံးပြုပါ URL ဒိုမိန်းအမည်
'type' => 'TCP_SOCKET_OPTIONS',
'data' => $data
];
// တစ် ဦး ထိန်းချုပ်မှုမက်ဆေ့ခ်ျကိုပေးပို့တဲ့အခါ,Buffer အရွယ်အစားသင့်လျော်ကြောင်းသေချာပါစေ
$buffer_size = socket_cmsg_space($control_message['type'], $control_message['data']);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_send($socket, $control_message, $buffer_size, 0);