PHP တွင် Socket-bocked socketing server ကိုအကောင်အထည်ဖော်ခြင်း PHP တွင်အခြေခံကွန်ယက်ဆက်သွယ်ရေးနိယာမကိုနားလည်ရန်ကူညီနိုင်သည်။ ပိတ်ဆို့ခြင်း mode ကိုဆိုလိုသည်မှာဒေတာများကိုပြုပြင်မွမ်းမံခြင်းသို့မဟုတ်ဆက်သွယ်မှုအဆင်သင့်မဖြစ်သေးသည်အထိဆာဗာသည်မဖတ်မချင်းစောင့်ဆိုင်းလိမ့်မည်ဟုဆိုလိုသည်။ ဤဆောင်းပါးသည် PHP ၏ Socket extension မှ sockets များဖန်တီးခြင်းမှ sockets များကိုပိတ်ဆို့ခြင်း mode ကိုတည်ဆောက်ရန်နှင့်ရိုးရှင်းသောပိတ်ဆို့ခြင်းဆာဗာကိုတည်ဆောက်ရန် Socke Socket extension ကိုတစ်ဆင့်ချင်းဤဆောင်းပါးစတင်မည်ဖြစ်သည်။
ပထမ ဦး စွာ PHP ပတ်ဝန်းကျင်တွင် Socket extension ကိုသေချာအောင်လုပ်ပါ။ PHPP.ini (ရှိလျှင်) တွင်အောက်ပါလိုင်းကိုရှာဖွေခြင်းနှင့်မပေါင်းသင်းပါ။
extension=sockets
Extension ကိုဖွင့်ထားသလားစစ်ဆေးရန် Php -M command ကိုသုံးပါ။
php -m | grep sockets
Socketets ကို သင်တွေ့နိုင်တယ်ဆိုရင် extension ကိုဖွင့်ထားတယ်။
အောက်ပါအချက်များမှာခြေဆန်းချက်တစ်ခုဖန်တီးရန်အခြေခံအဆင့်များမှာ function တစ်ခုစီ၏အခန်းကဏ် rote ကိုမိတ်ဆက်ပေးရန်အခြေခံအဆင့်များဖြစ်သည်။
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
die("socket_create() failed: " . socket_strerror(socket_last_error()) . "\n");
}
ဤနေရာတွင် IPv4 ( AF_inet ) အပေါ် အခြေခံ. TCP Socket ( Sock_Stream ) ကိုဖန်တီးနေကြသည်။
port reuse ကဲ့သို့သော socket options အချို့ကိုသတ်မှတ်နိုင်သည်။
socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);
$host = '0.0.0.0';
$port = 9000;
if (!socket_bind($socket, $host, $port)) {
die("socket_bind() failed: " . socket_strerror(socket_last_error($socket)) . "\n");
}
if (!socket_listen($socket, 5)) {
die("socket_listen() failed: " . socket_strerror(socket_last_error($socket)) . "\n");
}
5 ဆိုင်းငံ့ထားဆက်သွယ်မှုတောင်းဆိုမှုများအများဆုံးအရေအတွက်ကိုဖော်ပြသည်။
socket_set_block ကိုအသုံးပြုပါ။
if (!socket_set_block($socket)) {
die("socket_set_block() failed: " . socket_strerror(socket_last_error($socket)) . "\n");
}
ပိတ်ဆို့ခြင်း mode ကိုပိတ်ထားပြီးသည်နှင့်နောက်ဆက်တွဲ socket_accept_Acception , Socket_read နှင့်အခြားလုပ်ဆောင်ချက်များသည်စစ်ဆင်ရေးပြီးဆုံးသည်အထိပိတ်ဆို့လိမ့်မည်။
echo "ဆာဗာစတင်သည်,ဆိပ်ကမ်းကိုနားထောင်ပါ $port...\n";
while (true) {
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
echo "socket_accept() failed: " . socket_strerror(socket_last_error($socket)) . "\n";
continue;
}
$input = socket_read($clientSocket, 1024);
if ($input === false) {
echo "socket_read() failed: " . socket_strerror(socket_last_error($clientSocket)) . "\n";
} else {
$input = trim($input);
echo "မက်ဆေ့ခ်ျကိုလက်ခံရရှိခဲ့သည်: $input\n";
$response = "မင်းဒါကိုပို့လိုက်တယ်:$input\n";
socket_write($clientSocket, $response, strlen($response));
}
socket_close($clientSocket);
}
သင်ထွက်ရန်လိုအပ်သည့်အခါအဓိက socket ကိုပိတ်ရန်မမေ့ပါနှင့်။
socket_close($socket);
Telnet Connection Tress ကဲ့သို့သော command line client ကိုသုံးနိုင်သည်။
telnet gitbox.net 9000
သို့မဟုတ် Connection Testing အတွက်ရိုးရှင်းသော PHP client ကိုရေးပါ။
Socket_Create_Set_Set_BLOCK သို့ socket_set_block ကိုကျွန်ုပ်တို့တည်ဆောက်သည်။ ဤ mode သည်သင်ကြားခြင်း, debugging သို့မဟုတ် love-concurrencencencencencencencencencens စသည့်ရိုးရှင်းသောကွန်ယက်ဆက်သွယ်ရေးလျှောက်လွှာများအတွက်သင့်တော်သည်။ မြင့်မားသော concurrencencencencencency ဖြစ်ရပ်များအတွက်ပိတ်ဆို့ခြင်းမဟုတ်သော mode ကိုအသုံးပြုရန်သို့မဟုတ်ပိုမိုထိရောက်သောဖြစ်ရပ်ကွင်းဆက်အောင်မြင်ရန် ရွေးချယ်မှု / စစ်တမ်းကောက်ယူ ရန်အကြံပြုသည်။
ဤဆောင်းပါး၏လက်တွေ့ကျသောအဆင့်များဖြင့် PHP တွင်ပိတ်ဆို့ခြင်းဆာဗာများတည်ဆောက်ခြင်းလုပ်ငန်းစဉ်တစ်ခုလုံးကိုသင်ကျွမ်းကျင်နိုင်ပြီးပိုမိုနက်ရှိုင်းသောကွန်ယက်ပရိုဂရမ်အတွက်ခိုင်မာသောအခြေခံအုတ်မြစ်ချနိုင်သည်။