ပထမ ဦး စွာဆိပ်ကမ်းတစ်ခုသို့နားထောင်ပြီး 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 ကိုလက်ခံသည်, ကြိုဆိုသောသတင်းစကားကိုလက်ခံပြီးဆက်သွယ်မှုကိုပိတ်လိုက်သည်။
အထက်ပါ PHP script ကို /us/local/bin/php-server.php အဖြစ်သိမ်းဆည်းထားသည်ဟုယူဆသည်။ ၎င်းကိုစီမံရန်စနစ်တကျဝန်ဆောင်မှုဖိုင်ကိုရေးရန်လိုအပ်သည်။
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 အမှတ်အသားကိုသတ်မှတ်သည်။
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 အစေခံ!
Log Management - PHP scripts တွင် logging function ကိုထည့်ရန်အကြံပြုသည် ။
လုံခြုံရေး - အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီ fireewall စည်းကမ်းများကိုသတ်မှတ်ပါ။
0 န ် ဆောင်မှုခွင့်ပြုချက်များ
Code Code Robintess : Electant Shutdown အောင်မြင်ရန် scripts scripts scripts သို့ signal processing ( pcntl_signal ) ကိုထည့်ပါ။