လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပိုမိုကောင်းမွန်သောဖြစ်စဉ်ကိုထိန်းချုပ်ရန်နှင့်အလိုအလျောက်ပြန်လည်စတင်ရန်အတွက် PHP တွင် Societ_Accept () function 0 န်ဆောင်မှုကိုဘယ်လို run မလဲ။

ပိုမိုကောင်းမွန်သောဖြစ်စဉ်ကိုထိန်းချုပ်ရန်နှင့်အလိုအလျောက်ပြန်လည်စတင်ရန်အတွက် PHP တွင် Societ_Accept () function 0 န်ဆောင်မှုကိုဘယ်လို run မလဲ။

M66 2025-07-04

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

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

// လိပ်စာနှင့်ဆိပ်ကမ်းချည်နှောင်ခြင်း
$address = "0.0.0.0";
$port = 12345;
if (socket_bind($socket, $address, $port) === false) {
    die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

// ဆက်သွယ်မှုကိုနားထောင်ပါ
if (socket_listen($socket, 5) === false) {
    die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}

echo "ဝန်ဆောင်မှုစတင်ခဲ့သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port\n";

// client connections များကိုကွင်းဆက်တစ်ခုတွင်ရယူပါ
while (true) {
    $clientSocket = socket_accept($socket);
    if ($clientSocket === false) {
        echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
        continue;
    }

    $message = "ဆက်သွယ်မှုမှကြိုဆိုပါသည် m66.net PHP Socket အစေခံ!\n";
    socket_write($clientSocket, $message, strlen($message));

    socket_close($clientSocket);
}

socket_close($socket);
?>

ဤ script သည်စက်၏ 12345 ဆိပ်ကမ်းကိုနားထောင်ပြီး client connection ကိုလက်ခံသည်, ကြိုဆိုသောသတင်းစကားကိုလက်ခံပြီးဆက်သွယ်မှုကိုပိတ်လိုက်သည်။

2 ။ System Service ယူနစ်ဖိုင်ကိုဖန်တီးပါ

အထက်ပါ PHP script ကို /us/local/bin/php-server.php အဖြစ်သိမ်းဆည်းထားသည်ဟုယူဆသည်။ ၎င်းကိုစီမံရန်စနစ်တကျဝန်ဆောင်မှုဖိုင်ကိုရေးရန်လိုအပ်သည်။

  1. 0 န်ဆောင်မှုဖိုင်အသစ်ကို /etc/systemd/perstem/php-server.service.service ကိုဖန်တီးပါ

 [Unit]
Description=PHP Socket အစေခံ
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/php /usr/local/bin/php-socket-server.php
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=php-socket-server

[Install]
WantedBy=multi-user.target

ဥပမာ -

  • Execstart သည် system ၏ PHP စကားပြန်ကို အသုံးပြု. script ကိုဖွင့်ရန် startup command ကိုသတ်မှတ်သည်။

  • Restart = Crash ပြီးနောက် 0 န်ဆောင်မှုသည်အလိုအလျောက်ပြန်လည်စတင်လိမ့်မည်ဟုအမြဲ သေချာစေသည်။

  • RestartSec = 5 သည် restart ၏ 5 စက္ကန့်ကြားကာလကိုရည်ညွှန်းသည်။

  • Standard Excerter သည် Earthbleshooting အတွက် system log (SYSLOG) မှ output ကိုနှစ် ဦး စလုံးဖြစ်သည်။

  • Syslogididiaier သည် log အမှတ်အသားကိုသတ်မှတ်သည်။

3 ။ 0 န်ဆောင်မှုကိုဖွင့်ပြီးစတင်ပါ

0 န်ဆောင်မှုကိုအကျိုးသက်ရောက်စေပြီးစတင်ရန်အောက်ပါ command ကို Execute လုပ်ပါ။

 sudo systemctl daemon-reload
sudo systemctl enable php-socket-server.service
sudo systemctl start php-socket-server.service

0 န်ဆောင်မှုအဆင့်အတန်းကိုစစ်ဆေးပါ။

 sudo systemctl status php-socket-server.service

အကယ်. 0 န်ဆောင်မှုသည်ပုံမှန်အားဖြင့်အလုပ်လုပ်နေပါက Telnet သို့မဟုတ် NetCat ကိုစမ်းသပ်ရန်ချိတ်ဆက်ရန်သင်အသုံးပြုနိုင်သည်။

 telnet 127.0.0.1 12345

ကြိုဆိုပါတယ်မက်ဆေ့ခ်ျကိုတွေ့ရမယ်

 ဆက်သွယ်မှုမှကြိုဆိုပါသည် m66.net PHP Socket အစေခံ!

4 ။ အကောင်းမြင်အကြံပြုချက်များ

  • Log Management - PHP scripts တွင် logging function ကိုထည့်ရန်အကြံပြုသည်

  • လုံခြုံရေး - အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီ fireewall စည်းကမ်းများကိုသတ်မှတ်ပါ။

  • 0 ဆောင်မှုခွင့်ပြုချက်များ

  • Code Code Robintess : Electant Shutdown အောင်မြင်ရန် scripts scripts scripts သို့ signal processing ( pcntl_signal ) ကိုထည့်ပါ။