လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ကွန်ယက်တည်ငြိမ်မှုကိုကောင်းမွန်အောင်လုပ်ရန် sockets ၏ retranspions အရေအတွက်ကိုသတ်မှတ်ရန် Socket_set_Set_Option ကိုအသုံးပြုနည်း။

ကွန်ယက်တည်ငြိမ်မှုကိုကောင်းမွန်အောင်လုပ်ရန် sockets ၏ retranspions အရေအတွက်ကိုသတ်မှတ်ရန် Socket_set_Set_Option ကိုအသုံးပြုနည်း။

gitbox 2025-08-17
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဆောင်းပါးမစတင်မီအကြောင်းအရာ၏တစ်စိတ်တစ်ပိုင်း</span></span><span>
</span><span><span class="hljs-comment">// ဆောင်းပါး၏ဘာသာရပ်နှင့်မသက်ဆိုင်သော code သို့မဟုတ်မှတ်ချက်များ</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
----------------------------------------------
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဆောင်းပါးစတင်သည်</span></span><span>

<span class="hljs-comment">/**
 * ဘယ်လိုသုံးရမလဲ socket_set_option တည်ဆောက်သည် socket ကွန်ယက်တည်ငြိမ်မှုကိုအကောင်းဆုံးဖြစ်စေရန် retransmissions အရေအတွက်
 *
 * network programming ၌တည်၏,socket ဒါဟာအလွန်အသုံးများသောဆက်သွယ်ရေးယန္တရားဖြစ်ပါတယ်,၎င်းသည်ကွဲပြားခြားနားသောလုပ်ငန်းစဉ်များသို့မဟုတ်ကိရိယာများကိုကွန်ယက်ပေါ်တွင်ဒေတာများကိုလဲလှယ်ရန်ခွင့်ပြုသည်。အသုံးပြုမှုအတွက် socket ကွန်ယက်ဆက်သွယ်ရေးကိုပို့သောအခါ,ဂီယာတည်ငြိမ်မှုသည်အရေးကြီးသောထည့်သွင်းစဉ်းစားခြင်းဖြစ်သည်,အထူးသဖြင့်မတည်ငြိမ်သောသို့မဟုတ်မြင့်မားသော latency ကွန်ယက်ပတ်ဝန်းကျင်တွင်。ကွန်ယက်ဆက်သွယ်မှု၏ယုံကြည်စိတ်ချရတိုးတက်စေရန်အလို့ငှာ,我们可以通过တည်ဆောက်သည် socket ကွန်ယက်တည်ငြိမ်မှုကိုအကောင်းဆုံးဖြစ်စေရန် retransmissions အရေအတွက်。
 *
 * 本文将介绍ဘယ်လိုသုံးရမလဲ PHP အိမ်တွင်း `socket_set_option` 函数တည်ဆောက်သည် socket retransmissions အရေအတွက်,ကွန်ယက်ချိတ်ဆက်မှုတည်ငြိမ်မှုကိုတိုးတက်စေရန်。
 */</span>

 </span><span><span class="hljs-comment">// a TCP socket</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဖန်တီး socket ဆုံးရှုံး: "</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-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>();
}

</span><span><span class="hljs-comment">// ဦး တည်ရာလိပ်စာနှင့်ဆိပ်ကမ်းသို့ဆက်သွယ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$address</span></span><span> = </span><span><span class="hljs-string">'127.0.0.1'</span></span><span>;
</span><span><span class="hljs-variable">$port</span></span><span> = </span><span><span class="hljs-number">12345</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">socket_connect</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-variable">$address</span></span><span>, </span><span><span class="hljs-variable">$port</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"连接ဆုံးရှုံး: "</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-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>();
}

</span><span><span class="hljs-comment">// တည်ဆောက်သည် socket ရွေးချယ်စရာများ</span></span><span>
</span><span><span class="hljs-comment">// 这里我们တည်ဆောက်သည် SO_RCVBUF နှင့် SO_RCVBUF 重传次数相关的ရွေးချယ်စရာများ</span></span><span>
</span><span><span class="hljs-variable">$transmit_retries</span></span><span> = </span><span><span class="hljs-number">5</span></span><span>; </span><span><span class="hljs-comment">// တည်ဆောက်သည်重传次数为 5</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_SOCKET, SO_RCVBUF, </span><span><span class="hljs-number">65536</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တည်ဆောက်သည်接收缓冲区ဆုံးရှုံး: "</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-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</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_SOCKET, SO_RCVBUF, </span><span><span class="hljs-variable">$transmit_retries</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"တည်ဆောက်သည်重传次数ဆုံးရှုံး: "</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-string">"\n"</span></span><span>;
    </span><span><span class="hljs-keyword">exit</span></span><span>();
}

</span><span><span class="hljs-comment">// ဒေတာပို့ပါ</span></span><span>
</span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-string">"Hello, this is a test message!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">socket_write</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-variable">$message</span></span><span>, </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$message</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-comment">// ဆောင်းပါး၏အဓိကစာသား၏အဆုံး</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
----------------------------------------------
</span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဆောင်းပါးပြီးဆုံးပြီးနောက်အကြောင်းအရာအချို့</span></span><span>
</span><span><span class="hljs-comment">// မည်သည့်အဆုံးမှာအမှတ်အသားသို့မဟုတ်မှတ်ချက်</span></span><span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>