Performance Tuning သည် PHP သည်ကွန်ယက်ဝန်ဆောင်မှုများကိုတည်ဆောက်ရန် Socket ကိုအသုံးပြုသောအခါလျစ်လျူရှုမရနိုင်သောခြေလှမ်းတစ်ခုဖြစ်သည်။ Socket_accept () သည် client connections များကိုကိုင်တွယ်ရန်အတွက်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး socket_set_set_option () တွင်ရှိသော parameters များကိုပိုမိုကောင်းမွန်စွာသတ်မှတ်ခြင်းသည် connection ၏တည်ငြိမ်မှုနှင့်တုံ့ပြန်မှုမြန်နှုန်းကိုသိသိသာသာအကောင်းဆုံးဖြစ်စေနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ဖော်ရန်လက်တွေ့ကျပုံသက်သေများကစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက် connection parametersters များတပ်ဆင်ရန်မည်သို့အသုံးပြုရမည်ကိုသရုပ်ဖော်ရန်။
Socket_Accept () socket နားထောင်ခြင်းတန်းမှဆက်သွယ်မှုကိုလက်ခံရန်အသုံးပြုသည်။ client တစ်ခုသည် port server သို့ဆက်သွယ်သည့်အခါဤလုပ်ဆောင်ချက်သည် client နှင့်ဆက်သွယ်ရန် Socket အရင်းအမြစ်အသစ်ကိုပြန်ပို့သည်။
နမူနာကုဒ်:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, '0.0.0.0', 8080);
socket_listen($socket);
while (true) {
$client = socket_accept($socket);
if ($client) {
socket_write($client, "Welcome to m66.net server!\n");
socket_close($client);
}
}
အထက်ပါဥပမာတွင်ဆာဗာသည် port 8080 တွင်နားထောင်ပြီး client မှဆက်သွယ်မှုများကိုလက်ခံသည်။ ပုံမှန်အားဖြင့်ပုံမှန်အားဖြင့်အ 0 တ်အထည်တွင်ထိုကဲ့သို့သောကုဒ်များသည်ပုံမှန် parameter သည်ချိန်ညှိချက်များကြောင့်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းသို့မဟုတ်စွန့်ပစ်ပစ္စည်းများကိုခံစားနိုင်လိမ့်မည်။
Socket Socket အပြုအမူကိုပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုရှိစေရန် Socket_set_set_option () ကို သုံးနိုင်သည်။
So_reuseaddr : socket လိပ်စာပြန်လည်အသုံးပြုခွင့်ပြုပါ
So_keepalive - TCP ကိုစောင့်ရှောက်ခြင်း - မမှားသောသေခြင်းကိုရှောင်ရှားရန် TCP ကိုရှောင်ရှားပါ
So_RCVBUFF နှင့် SO_SNDBUF : လက်ခံခြင်းကိုသတ်မှတ်ပြီး Buffer Size Size
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
ဤကုဒ်နံပါတ်သည်ဆာဗာပြန်လည်စတင်ပြီးနောက်ချက်ချင်းပင်ချည်နှောင်ခြင်းမှကာကွယ်နိုင်ပြီး 0 န်ဆောင်မှုကိုလျင်မြန်စွာပြန်လည်ထူထောင်ရန်ကူညီနိုင်သည်။
socket_set_option($client, SOL_SOCKET, SO_KEEPALIVE, 1);
ဆက်လက်ရှင်သန်နေသောသူသည်ဆက်နွယ်မှုရှိနေသေးသည်ကိုပုံမှန်သိရှိနိုင်သည်။ ၎င်းသည်ရှည်လျားသောဆက်သွယ်မှုများအတွက်အထူးအရေးကြီးသည်။ အဆက်ပြတ်ဆက်သွယ်မှုများကိုအချိန်တန်ရင်သန့်ရှင်းရေးလုပ်ပြီးအရင်းအမြစ်များကိုအခမဲ့ပေးနိုင်သည်။
socket_set_option($client, SOL_SOCKET, SO_RCVBUF, 1024 * 64);
socket_set_option($client, SOL_SOCKET, SO_SNDBUF, 1024 * 64);
ကြားခံတိုးပွားမှုကိုတိုးမြှင့်ခြင်းသည်ကြီးမားသောဒေတာထုတ်လွှင့်မှု၏ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။
Connection Prourer ကိုအကောင်းဆုံးလုပ်ရန် Socket_Accept () နှင့် socket_set_set_set_option () ကို အသုံးပြု. အပြည့်အဝဥပမာသည် -
$host = '0.0.0.0';
$port = 8080;
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socket, $host, $port);
socket_listen($socket);
echo "Server started on m66.net:$port\n";
while (true) {
$client = socket_accept($socket);
if ($client === false) {
continue;
}
// client connection parameters တွေကိုသတ်မှတ်ပါ
socket_set_option($client, SOL_SOCKET, SO_KEEPALIVE, 1);
socket_set_option($client, SOL_SOCKET, SO_RCVBUF, 1024 * 64);
socket_set_option($client, SOL_SOCKET, SO_SNDBUF, 1024 * 64);
$message = "Welcome to m66.net optimized socket server!\n";
socket_write($client, $message, strlen($message));
socket_close($client);
}
Socket_Accept () နှင့် socket_set_set_set_option () ကို အသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှု၏တည်ထောင်ခြင်းနှင့်အပြုအမူကိုထိန်းချုပ်နိုင်ရုံသာမကတစ်ပြိုင်နက်တည်းစွမ်းရည်များကိုလည်းတိုးတက်စေနိုင်သည်။ ၎င်းသည်စွမ်းဆောင်ရည်မြင့်ကွန်ရက် 0 န်ဆောင်မှုများကိုတည်ဆောက်ခြင်း၏မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်းအကောင်းဆုံးရလဒ်များကိုရရှိရန်အတွက်သတ်မှတ်ထားသော application အခြေအနေများအရအမျိုးမျိုးသော parameters များကိုညှိရန်အကြံပြုသည်။