PHP Network Programming တွင်ကြီးမားသောဒေတာ packets များကိုထိရောက်စွာထုတ်လွှင့်ခြင်းသည်စွမ်းဆောင်ရည်ကောင်းမွန်မှု၏အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ So_rcvbuf option နှင့်ပေါင်းစပ်ထားသော socket_set_option function သည်လက်ခံရရှိသောကြားခံအရွယ်အစားကိုပြုပြင်နိုင်သည်။ ဤဆောင်းပါးသည်ကြီးမားသောဒေတာ packets များကိုထိရောက်စွာထုတ်လွှင့်ရန်အတွက်လက်ခံသောကြားခံကိုရရှိရန် Socket_set_option ကို မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ဖော်ပြထားသည်။
So_RCVBUFF သည်လက်ခံရရှိသောကြားခံအရွယ်အစားကိုသတ်မှတ်ပေးသော socket option တစ်ခုဖြစ်သည်။ IPANCE မှမဖတ်နိုင်သောအချက်အလက်များပိုမိုများပြားလာလေလေစနစ်သည် cache cache လုပ်နိုင်သည်, packet ဆုံးရှုံးမှုနှင့်မကြာခဏစနစ်ခေါ်ဆိုမှုများကိုရှောင်ရှားနိုင်ပြီးဒေတာအမြောက်အများကိုပြုပြင်ရန်အတွက်အချက်အလက်အပြောင်းအလဲများအတွက်အချက်အလက်ပြုပြင်ခြင်းထိရောက်မှုကိုတိုးတက်အောင်ပြုလုပ်ပါ။
ပုံမှန်အားဖြင့် Buffer Size သည်များသောအားဖြင့်သေးငယ်ပြီး packet transmission ၏လိုအပ်ချက်များကိုဖြည့်ဆည်းပေးနိုင်သည်။ အကယ်. ဒေတာ packet သည် buffer အရွယ်အစားထက်ကျော်လွန်ပါက၎င်းသည်ကွန်ရက်ပိတ်ဆို့ခြင်းသို့မဟုတ် packet ကိုဆုံးရှုံးစေနိုင်သည်။ ထို့ကြောင့်ကျိုးကြောင်းဆီလျော်စွာလက်ခံသည့်ကြားခံသည်အုတ်မြစ်နှင့်တည်ငြိမ်မှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
// a TCP Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
die("ဖန်တီး socket ဆုံးရှုံး: " . socket_strerror(socket_last_error()));
}
// လက်ခံရရှိ buffer အရွယ်အစားကိုသတ်မှတ်ပါ,ယူနစ် bytes ဖြစ်ကြသည်,ဒီမှာသတ်မှတ်ထားသည်2MB
$rcvbufSize = 2 * 1024 * 1024;
if (!socket_set_option($socket, SOL_SOCKET, SO_RCVBUF, $rcvbufSize)) {
die("တည်ဆောက်သည် SO_RCVBUF ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)));
}
// ဆာဗာကိုဆက်သွယ်ပါ(နမူနာလိပ်စာ)
$serverIp = 'gitbox.net';
$serverPort = 8080;
if (!socket_connect($socket, $serverIp, $serverPort)) {
die("连接服务器ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)));
}
// ဒေတာဥပမာကိုဖတ်ပါ
while (true) {
$buffer = '';
$bytes = socket_recv($socket, $buffer, 8192, 0);
if ($bytes === false) {
echo "接收数据ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
break;
} elseif ($bytes === 0) {
echo "ဆက်သွယ်မှုပိတ်\n";
break;
}
echo "ခံယူ {$bytes} byte ဒေတာ\n";
// ပြုပြင်ခြင်းဒေတာယုတ္တိဗေဒ
}
socket_close($socket);
?>
operating system ကန့်သတ်ချက်များ <br> ကြားခံအရွယ်အစားကိုချိန်ညှိခြင်းသည် operating system မှကန့်သတ်ထားသည်။ အများဆုံးကြားခံအရွယ်အစားကို VIT.CORE.RMEMMEMEMEM_MAX ကို ကြည့်ရှုခြင်းစသည့် system configuration မှတဆင့်ကြည့်ရှုနိုင်ပြီးပြုပြင်နိုင်သည်။
Buffer ကိုပို့ပေးပါ So_RCVBUF အပြင်, DATION packets များပေးပို့ပါက so_sndbuf ကို ထုတ်လွှင့်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်လည်းချိန်ညှိနိုင်သည်။
ညှိကိုအမှန်တကယ်ကွန်ယက်အခြေအနေများနှင့်ပေါင်းစပ်ရန်လိုအပ်သည် ကြီးမားသောကြားခံများသည်မှတ်ဥာဏ်အသုံးပြုမှုပြ problems နာများကိုလည်းဖြစ်ပေါ်စေနိုင်သည်။ စီးပွားရေးအခြေအနေများနှင့်ကွန်ယက် bandwidth အပေါ် အခြေခံ. သူတို့ကိုကျိုးကြောင်းဆီလျော်စွာ configure လုပ်ရန်အကြံပြုသည်။
So_rcvbuf သတ်မှတ်ရန် PHP ၏ Socket_set_set_option function ကိုအသုံးပြုခြင်း So_rcvBuf သည်ကြီးမားသော data packets များ၏ reception ည့်ခံခြင်းထိရောက်မှုကိုထိရောက်စွာတိုးတက်စေပြီးမလုံလောက်သောကြားခံကြောင့်ဖြစ်ရတဲ့ packet ဆုံးရှုံးမှုနှင့်နှောင့်နှေးမှုကိုရှောင်ရှားနိုင်သည်။ ဆာဗာနှင့် operating system ၏ညှိနှိုင်းခြင်းနှင့်ပေါင်းစပ်ပြီးကွန်ယက်အက်ပလီကေးရှင်းများကိုပိုမိုတည်ငြိမ်ပြီးထိရောက်စွာပြုလုပ်နိုင်သည်။