လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_Accept () + Socket_set_option () - စွမ်းဆောင်ရည်ကိုအကောင်းဆုံးဖြစ်စေရန် connection parameters များကိုသတ်မှတ်ပါ

Socket_Accept () + Socket_set_option () - စွမ်းဆောင်ရည်ကိုအကောင်းဆုံးဖြစ်စေရန် connection parameters များကိုသတ်မှတ်ပါ

M66 2025-06-15

Performance Tuning သည် PHP သည်ကွန်ယက်ဝန်ဆောင်မှုများကိုတည်ဆောက်ရန် Socket ကိုအသုံးပြုသောအခါလျစ်လျူရှုမရနိုင်သောခြေလှမ်းတစ်ခုဖြစ်သည်။ Socket_accept () သည် client connections များကိုကိုင်တွယ်ရန်အတွက်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်ပြီး socket_set_set_option () တွင်ရှိသော parameters များကိုပိုမိုကောင်းမွန်စွာသတ်မှတ်ခြင်းသည် connection ၏တည်ငြိမ်မှုနှင့်တုံ့ပြန်မှုမြန်နှုန်းကိုသိသိသာသာအကောင်းဆုံးဖြစ်စေနိုင်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ဖော်ရန်လက်တွေ့ကျပုံသက်သေများကစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက် connection parametersters များတပ်ဆင်ရန်မည်သို့အသုံးပြုရမည်ကိုသရုပ်ဖော်ရန်။

1 ။ socket_accept ၏အခန်းကဏ်။

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 သည်ချိန်ညှိချက်များကြောင့်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းသို့မဟုတ်စွန့်ပစ်ပစ္စည်းများကိုခံစားနိုင်လိမ့်မည်။

2 ။ Socket_set_set_option () ဆက်သွယ်မှုစွမ်းဆောင်ရည်ကိုပိုကောင်းအောင်လုပ်ပါ

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 န်ဆောင်မှုကိုလျင်မြန်စွာပြန်လည်ထူထောင်ရန်ကူညီနိုင်သည်။

Keep- အသက်ရှင်လျက်ယန္တရားကို enable

 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);

ကြားခံတိုးပွားမှုကိုတိုးမြှင့်ခြင်းသည်ကြီးမားသောဒေတာထုတ်လွှင့်မှု၏ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။

3 ။ ပြီးပြည့်စုံသောဥပမာ

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);
}

4 ။ အကျဉ်းချုပ်

Socket_Accept () နှင့် socket_set_set_set_option () ကို အသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဆက်သွယ်မှု၏တည်ထောင်ခြင်းနှင့်အပြုအမူကိုထိန်းချုပ်နိုင်ရုံသာမကတစ်ပြိုင်နက်တည်းစွမ်းရည်များကိုလည်းတိုးတက်စေနိုင်သည်။ ၎င်းသည်စွမ်းဆောင်ရည်မြင့်ကွန်ရက် 0 န်ဆောင်မှုများကိုတည်ဆောက်ခြင်း၏မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်းအကောင်းဆုံးရလဒ်များကိုရရှိရန်အတွက်သတ်မှတ်ထားသော application အခြေအနေများအရအမျိုးမျိုးသော parameters များကိုညှိရန်အကြံပြုသည်။