<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဤအပိုင်းသည်ယခင်ဆောင်းပါးတွင်ဆီလျှော်သောအကြောင်းအရာဥပမာတစ်ခုဖြစ်သည်</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆောင်းပါးမစတင်မီမသက်ဆိုင်သောအကြောင်းအရာ display ကို\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဆောင်းပါးစတင်သည်</span></span><span>
<span class="hljs-comment">/*
ဘဲှ့:အသုံးပြု socket_set_option သင့်အောင်လုပ်ခြင်း socket 的数据发送延迟有什么作အသုံးပြု?configure လုပ်နည်း?
在使အသုံးပြု PHP ဘယ်အချိန်မှာ programming network,socket 通信的性能和行为对应အသုံးပြု的响应速度和稳定性有着重要影响。socket_set_option ဟုတ်ကဲ့ PHP ထောက်ပံ့ပေးတဲ့ function ကို,အသုံးပြု于တည်ဆောက်သည်套接字的各种ရွေးချယ်စရာများ,其အလယ်ပိုင်းသင့်အောင်လုပ်ခြင်း数据发送延迟的功能,အဓိကအားဖြင့်ချိန်ညှိချက်များမှတဆင့် TCP_NODELAY အကောင်အထည်ဖော်ရန်ရွေးချယ်စရာများ。
တစ်、socket_set_option သင့်အောင်လုပ်ခြင်း数据发送延迟的作အသုံးပြု
ပုံမှန်အားဖြင့်,TCP 协议会启အသုံးပြု Nagle algorithm(Nagle's Algorithm),该algorithm的作အသုံးပြုဟုတ်ကဲ့将小块数据合并成更大的数据包တစ်起发送,ကွန်ယက်ပိတ်ဆို့မှုကိုလျှော့ချပါ။ packets အရေအတွက်ကိုလျှော့ချပါ。但这会导致数据发送存在တစ်定的延迟,尤其ဟုတ်ကဲ့在发送大量小包数据时,应အသုံးပြု会感觉响应变慢。
使အသုံးပြု socket_set_option တည်ဆောက်သည် TCP_NODELAY ရွေးချယ်စရာများ,ပိတ်နိုင်ပါတယ် Nagle algorithm,packets တွေကိုတတ်နိုင်သမျှအမြန်ဆုံးပို့ပါ,နှောင့်နှေးမှုကိုလျှော့ချပါ。这对于对实时性要求高的应အသုံးပြု(အွန်လိုင်းဂိမ်းများကဲ့သို့、လက်ငင်းဆက်သွယ်ရေး、ဘဏ် financial ာရေးကုန်သွယ်ရေးစနစ်စသည်တို့)အထူးသဖြင့်အရေးကြီးသော。
နှစ်、configure လုပ်နည်း socket_set_option Data Defing နှောင့်နှေးမှုကိုပိတ်ပါ
PHP အလယ်ပိုင်း,socket_set_option 的အသုံးပြု法如下:
</span></span></span>
bool socket_set_set_option (အရင်းအမြစ် $ socket, int $ အဆင့်, int $ optname, mixed $ optval)
<span><span>
- </span><span><span class="hljs-variable">$socket</span></span><span>:အရင်းအမြစ်များ
- </span><span><span class="hljs-variable">$level</span></span><span>:ရွေးချယ်စရာများ的层级,တစ်般使အသုံးပြု SOL_TCP
- </span><span><span class="hljs-variable">$optname</span></span><span>:ရွေးချယ်စရာများ名称,ဥပမာအားဖြင့် TCP_NODELAY
- </span><span><span class="hljs-variable">$optval</span></span><span>:ရွေးချယ်စရာများ值,通常ဟုတ်ကဲ့布尔型或整数型
နမူနာကုဒ်:
```php
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_create</span></span><span>(AF_INET, SOCK_STREAM, SOL_TCP);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$socket</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"socket_create failed: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">socket_strerror</span></span><span>(</span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>()));
}
</span><span><span class="hljs-comment">// ရုပ်သိမ်းခြင်း Nagle algorithm,ပေးပို့ခြင်းနှောင့်နှေးမှုကိုလျှော့ချပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">socket_set_option</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, SOL_TCP, TCP_NODELAY, </span><span><span class="hljs-number">1</span></span><span>)) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"socket_set_option TCP_NODELAY failed: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">socket_strerror</span></span><span>(</span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>)));
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"TCP_NODELAY တည်ဆောက်သည်成功,数据发送延迟已ရုပ်သိမ်းခြင်း。\n"</span></span><span>;
</span><span><span class="hljs-comment">// အခြား socket ဆက်သွယ်မှုနှင့်စစ်ဆင်ရေးကုဒ်...</span></span><span>
</span><span><span class="hljs-title function_ invoke__">socket_close</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
3 ။ မှတ်စုဖို့အရာ
Nagle algorithm ကိုလျှော့ချနိုင်သော်လည်း Transmission နှောင့်နှေးမှုကိုလျှော့ချနိုင်သော်လည်း၎င်းသည်ကွန်ယက် bandwidth bandwidth နှင့် system အရင်းအမြစ်အသုံးပြုမှုကိုတိုးမြှင့်စေနိုင်သည်။
ဤရွေးချယ်မှုသည် TCP Sockets အတွက်သာတရားဝင်သည်။ UDP sockets များအတွက်မမှန်ကန်ပါ။
အချို့သော operating systems သို့မဟုတ် network enformation များသည်ဤရွေးချယ်မှုကိုအကန့်အသတ်ရှိနိုင်သည်။ ဖြန့်ကျက်ခြင်းမပြုမီ၎င်းကိုအပြည့်အဝစစ်ဆေးရန်အကြံပြုသည်။
အကျဉ်းချုပ်
TCP_NODELAY ကို socket_set_option မှတဆင့် socket tcle algorithm ကိုထိထိရောက်ရောက်ပိတ်ထားနိုင်သည်။ ဤရွေးချယ်မှုကိုမှန်ကန်စွာပြင်ဆင်ခြင်းသည် PHP အခြေပြုကွန်ယက်အက်ပလီကေးရှင်းများအထူးသဖြင့်အချိန်နှင့်တပြေးညီအပြန်အလှန်အကျိုးသက်ရောက်မှုရှိသောအခြေအနေများအတွက်စွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
*
>
<span></span>