လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Socket_set_option ကို so_ekeepalive ကိုကြာမြင့်စွာဆက်နွယ်မှုရှိစေရန်အသုံးပြုသည်

Socket_set_option ကို so_ekeepalive ကိုကြာမြင့်စွာဆက်နွယ်မှုရှိစေရန်အသုံးပြုသည်

gitbox 2025-05-28

PHP Network Programming တွင်ပါ 0 င်သောဆက်သွယ်မှုသည်စွမ်းဆောင်ရည်မြှင့်တင်ရန်နှင့်အရင်းအမြစ်သုံးစွဲမှုကိုလျှော့ချရန်အတွက်မြဲမြဲချိတ်ဆက်မှုသည်အလွန်အရေးကြီးသည်။ ရှည်လျားသောဆက်သွယ်မှုများကိုအကောင်အထည်ဖော်ရန်အသုံးများသောနည်းလမ်းမှာ TCP ၏ So_Keepalive option ကိုသတ်မှတ်ရန်ဖြစ်သည်။ ဤဆောင်းပါးသည် PHPP ၏ Socket_set_set_option ကို ပေါင်းစပ်ရန် So_eepalive ကို မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြရန် function ကိုပေါင်းစပ်မည်။


So_keepalive ဆိုတာဘာလဲ။

So_keepalive သည် TCP protocol တွင် Socket option တစ်ခုဖြစ်သည်။ ဒီရွေးစရာကိုဖွင့်ပြီးနောက်လည်ပတ်မှုစနစ်သည်အဆက်အသွယ်လုပ်ခြင်းသည်ပျင်းရိခြင်း, အကယ်. အခြားပါတီသည်မတုံ့ပြန်ပါကဆက်သွယ်မှုကိုအဆက်ပြတ်သည်ဟုယူဆကြသည်။

So_ekeepalive ကို အသုံးပြုခြင်း၏အကျိုးကျေးဇူးများ -

  • ပြတ်တောက်မှုကြောင့်ဖြစ်ပေါ်လာသော "အတုသေမင်း" ဆက်သွယ်မှုကိုလျှော့ချပါ။

  • အရင်းအမြစ်များကိုချွေတာရန်အချိန်မီမမှန်ကန်သောဆက်သွယ်မှုများကိုဖြန့်ချိပါ။

  • ချက်တင် 0 န်ဆောင်မှုများ,


PHP တွင် So_ekeepalive ကို Enable လုပ်ရန် Socket_set_option အသုံးပြုနည်း။

Socket အတွက်အမျိုးမျိုးသောရွေးချယ်စရာများကိုသတ်မှတ်နိုင်သည့် Socket_set_set_option function ကိုထောက်ပံ့ပေးသည်။ အသုံးပြုမှုဥပမာများကိုအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
// ဖန်တီးTCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    die("socket_create failed: " . socket_strerror(socket_last_error()));
}

// ဆာဗာကိုဆက်သွယ်ပါ(ဥပမာလိပ်စာအသုံးပြုမှုgitbox.net)
$server = 'gitbox.net';
$port = 80;
if (!socket_connect($socket, $server, $port)) {
    die("socket_connect failed: " . socket_strerror(socket_last_error($socket)));
}

// ဖွင့်လှစ်SO_KEEPALIVEရွေးချယ်စရာများ
if (!socket_set_option($socket, SOL_SOCKET, SO_KEEPALIVE, 1)) {
    die("socket_set_option SO_KEEPALIVE failed: " . socket_strerror(socket_last_error($socket)));
}

echo "SO_KEEPALIVE已ဖွင့်လှစ်,ရှည်လျားသောဆက်သွယ်မှုကိုစတင်ခဲ့သည်。\n";

// ဤတွင်သင်နောက်ဆက်တွဲဒေတာကိုဖတ်ရှုခြင်းနှင့်ရေးနိုင်ပါတယ်

socket_close($socket);
?>

အထက်ပါကုဒ်သည် Socket_set_option မှ Soote_epalive မှတဆင့် so_ekeepalive ကို ဖွင့်ပေးသည်။


နောက်ထပ်ညှိ: set- အသက်ရှင်လျက် parameters တွေကို set

So_keepalive တွင် Linux တွင်သာစောင့်ရှောက်နေသောလုပ်ဆောင်မှုကိုသာခွင့်ပြုထားသည်။

  • tcp_keepalive_time : စက္ကန့်ဘယ်လောက်များများလဲ။

  • TCP_KEPALIVEVER_INTVL : Interval ကိုပေးပို့ခြင်းသည်ပုံမှန်အားဖြင့် 75 စက္ကန့်ဖြစ်သည်။

  • TCP_KEPALIVER_PROBES : Detection Packet ကိုအကြိမ်အရေအတွက်အကြိမ်အရေအတွက်, ပုံမှန်သည် 9 ကြိမ်ဖြစ်သည်။

ဤရွေ့ကား parameters တွေကိုတက်ကြွစွာစောင့်ရှောက်ခြင်းနှင့်အဆက်ဖြတ်ခြင်း၏အရှိန်ကိုအရှိန်အဟုန်၏ sensitivity ကိုအကျိုးသက်ရောက်စေသည်။ ၎င်းကိုစနစ်တကျ command များဖြင့်ယာယီပြုပြင်နိုင်သည်။

 # ပျင်းရိထားပါ10စက္ကန့်ပိုင်းအတွင်းအသက်ရှင်နေပါ
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time
# ရှာဖွေတွေ့ရှိမှု Packet Interval ကိုသတ်မှတ်ပါ5စက်ဏန့်
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_intvl
# မှတ်ချေးသည့် packet ကိုအကြိမ်အရေအတွက်ကိုသတ်မှတ်ပါ3ဒုတိယနှုန်း
echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes

အကယ်. သင်သည်ဤ parameters များကို php code တွင်အလိုအလျောက်သတ်မှတ်လိုပါကများသောအားဖြင့် system command များကိုဖုန်းခေါ်ဆိုရန်သို့မဟုတ် extension interface ကိုသုံးရန်လိုအပ်သော်လည်းများသောအားဖြင့်လိုအပ်ချက်များနှင့်ကိုက်ညီရန် So_eepalive ကို သာအသုံးပြုနိုင်သည်။


လက်တွေ့အကျဉ်းချုပ်

So_eepalive မှ socket_set_set_option ကို php တွင်ဖွင့ ်. တက်ကြွစွာ parameters တွေကိုသိမ်းထားရန်စနစ်၏ကျိုးကြောင်းဆီလျော်သော configuration ကိုပူးပေါင်းဆောင်ရွက်ရန်,

  • Socket, Call Socket_set_option ($ socket, sol_socketive so_eepalive, 1)

  • ရှာဖွေတွေ့ရှိမှုစွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အသက်ရှင်ခြင်းဆိုင်ရာသတ်မှတ်ချက်များကိုစောင့်ရှောက်ရန်စနစ်ကိုညှိပါ

  • ဆက်သွယ်မှုတည်ငြိမ်မှုကိုတိုးမြှင့်ပေးရန် HeartBeat packet ယန္တရားနှင့်ပေါင်းစပ်ထားသည်

ရှည်လျားသောဆက်သွယ်မှုထိန်းသိမ်းခြင်းသည်ရှုပ်ထွေးသောအင်ဂျင်နီယာပြ problem နာတစ်ခုဖြစ်သော်လည်း So_keepalive ၏အခြေခံမူများနှင့်အသုံးပြုမှုနည်းလမ်းများကိုကျွမ်းကျင်သည်။