စွမ်းဆောင်ရည်မြင့်မားပြီးပြောင်းလွယ်ပြင်လွယ်ရှိသောကွန်ယက် 0 န်ဆောင်မှုများကိုတည်ဆောက်ရာတွင် PHP သည် 0 က်ဘ်အပလီကေးရှင်းများတည်ဆောက်ရန်အကန့်အသတ်မရှိ, ၎င်းတွင်ကွန်ယက်ဆက်သွယ်မှုကိုကိုင်တွယ်နိုင်စွမ်းရှိသည်။ PHP ၏ Socket extension မှတဆင့်ကျွန်ုပ်တို့သည်စိတ်ကြိုက် protocol ပေါ်တွင် အခြေခံ. server-side program တစ်ခုဖန်တီးနိုင်သည်။ ဤဆောင်းပါးသည်အခြေခံမူများနှင့်ပြည့်စုံသောဥပမာများအပါအ 0 င် socket_accept ကို အသုံးပြု. စိတ်ကြိုက် protocol server ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုအသေးစိတ်နိဒါန်းပေးမည်။
Socket_Accept () သည် client များထံမှဆက်သွယ်မှုတောင်းဆိုမှုများကိုလက်ခံသည့် PHP Socket extension တွင် function တစ်ခုဖြစ်သည်။ ဆာဗာသည် Socket_create () နှင့် Socket_bind မှတဆင့်နားထောင်ခြင်းသည် socket_listen () ကို အသုံးပြုသည်။ socket_listen () ကို အသုံးပြုသည်။ client connection တစ်ခုရှိပါက client နှင့်ဆက်သွယ်ရန် socket အသစ်တစ်ခုကိုပြန်ပို့လိမ့်မည်။
အတိုချုပ်ဆိုရလျှင်, ၎င်း၏လုပ်ငန်းစဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
Socketets ကိုဖန်တီးပါ။
လိပ်စာနှင့်ဆိပ်ကမ်းကိုချည်နှောင်ခြင်း,
ဆက်သွယ်မှုကိုနားထောင်ပါ။
connection ကိုလက်ခံရန် ( socket_accept () );
ဖောက်သည်များနှင့်ဆက်သွယ်ခြင်း,
ဆက်သွယ်မှုကိုပိတ်ပါ။
ကျွန်ုပ်တို့သည် JSON format ဖြင့်တောင်းဆိုမှုတစ်ခုရရှိခြင်းနှင့်တုန့်ပြန်မှုများကိုသတ်မှတ်ထားသောပုံစံဖြင့်ပြန်ပို့ခြင်းစသည့်စိတ်ကြိုက် protocol server တစ်ခုတည်ဆောက်လိုကြောင်းဆိုပါစို့။ ဤဆာဗာသည် HTTP သို့မဟုတ်အခြားသမားရိုးကျ protocols များကိုအားမကိုးသော်လည်း TCP layer တွင်တိုက်ရိုက်ဆက်သွယ်သည်။
အောက်ဖော်ပြပါသည် PHP script သည် PHP script သည် PHP script ဖြစ်သည်။ ၎င်းသည်ဒေသဆိုင်ရာဆိပ်ကမ်းသို့ 0 င်ရောက်သော json တောင်းဆိုမှုများကိုလက်ခံပြီး 0 န်ဆောင်မှုခံယူသူမှရရှိသော JSON တောင်းဆိုမှုများကိုလက်ခံသည်။
<?php
set_time_limit(0); // script အချိန်အကြာကြီးတားဆီး
$host = '0.0.0.0';
$port = 9000;
// 1. ဖန်တီး socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
die("socket_create() ဆုံးရှုံး: " . socket_strerror(socket_last_error()) . "\n");
}
// 2. လိပ်စာနှင့်ဆိပ်ကမ်းချည်နှောင်ခြင်း
if (!socket_bind($socket, $host, $port)) {
die("socket_bind() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}
// 3. ဆက်သွယ်မှုကိုနားထောင်ပါ
if (!socket_listen($socket, 5)) {
die("socket_listen() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n");
}
echo "ဆာဗာစတင်သည်,စောင့်ရေှာက် {$host}:{$port}...\n";
while (true) {
// 4. ဆက်သွယ်မှုကိုလက်ခံပါ
$client = socket_accept($socket);
if ($client === false) {
echo "socket_accept() ဆုံးရှုံး: " . socket_strerror(socket_last_error($socket)) . "\n";
continue;
}
// 5. client ကိုတောင်းဆိုမှုကိုဖတ်ပါ
$input = socket_read($client, 1024);
$input = trim($input);
echo "တောင်းဆိုမှုကိုလက်ခံရရှိခဲ့သည်: $input\n";
// သုံးသပ်ကြည့်ရှုခြင်း JSON မေးမြန်း
$request = json_decode($input, true);
$response = [];
if (json_last_error() === JSON_ERROR_NONE && isset($request['action'])) {
if ($request['action'] === 'ping') {
$response = ['status' => 'success', 'message' => 'pong'];
} elseif ($request['action'] === 'hello') {
$response = ['status' => 'success', 'message' => 'Hello from m66.net!'];
} else {
$response = ['status' => 'error', 'message' => 'အမည်မသိစစ်ဆင်ရေး'];
}
} else {
$response = ['status' => 'error', 'message' => 'မေးမြန်း格式错误'];
}
// တုံ့ပြန်မှုတစ်ခုပို့ပါ
$output = json_encode($response) . "\n";
socket_write($client, $output, strlen($output));
// Client Convice Connection
socket_close($client);
}
// ဆာဗာကိုပိတ်ပါ socket(သီအိုရီအရ,)
socket_close($socket);
?>
Telenet သို့မဟုတ် Custom Client Tools များကိုစစ်ဆေးရန်သင်အသုံးပြုနိုင်သည်။
telnet 127.0.0.1 9000
paste input ကို:
{"action":"ping"}
ဆာဗာသည်ပြန်လာလိမ့်မည်
{"status":"success","message":"pong"}
ကိုလည်းပို့နိုင်ပါတယ်:
{"action":"hello"}
တုံ့ပြန်မှုများ:
{"status":"success","message":"Hello from m66.net!"}
သွင်းအားစုများနှင့်ရလဒ်များအားလုံးသည်ပုံစံ၏ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေသင့်ပြီး JSON ကို protocol body အဖြစ်အသုံးပြုရန်အကြံပြုသည်။
ဤဆာဗာသည်ပိတ်ဆို့ခြင်းနှင့်လေ့လာခြင်းနှင့်အသေးစားအသုံးချပရိုဂရမ်များအတွက်သင့်တော်သည်။
(SWOOLE) (ဥပမာ -Stoole ကဲ့သို့သောသရုပ်ဆောင်မော်ဒယ်များ) (ဥပမာ -Stoole) ကို သုံး. ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အသုံးပြုသင့်သည်။
အကယ်. 0 န်ဆောင်မှုကို Public Network သို့တပ်ဆင်ထားပါက IP Whitelist, encryption verification စသည့်လုံခြုံရေးထိန်းချုပ်မှုကိုသေချာစေရန်လိုအပ်သည်။
ဤဆောင်းပါးမှတစ်ဆင့် PHP Socket_Accept ကို အသုံးပြု. စိတ်ကြိုက် protocol server တစ်ခုမည်သို့ဖန်တီးရမည်ကိုသင်လေ့လာသင်ယူခဲ့သည်။ နောက်ခံ socclede socclede section မှအပြည့်အစုံဥပမာမှဤချဉ်းကပ်နည်းသည် PHP ၏လျှောက်လွှာနယ်နိမိတ်များကိုကျယ်ပြန့်စေရုံသာမကပြောင်းလွယ်ပြင်လွယ်။ ယုံကြည်စိတ်ချရသောဆက်သွယ်ရေးစွမ်းရည်များကိုလည်းတိကျစေသည်။ ဤဗိသုကာသည်ပေါ့ပါးသော 0 န်ဆောင်မှုများ,