function name: Socket_select ()
သက်ဆိုင်သောဗားရှင်း - PHP 4> = 4.3.0, PHP 5, PHP 7
function ကိုဖော်ပြချက် - socket_select () function ကို () function ကို socket setchets အပေါ် / o စစ်ဆင်ရေးမြှောက်ဖို့အသုံးပြုသည်။ မည်သည့် Sockets တွင်မည်သည့် sockets များရှိသည်ကိုဆုံးဖြတ်ရန်တစ်ပြိုင်နက်တည်း socket မျိုးစုံကိုတစ်ပြိုင်တည်းကြည့်ရှုနိုင်သည်။ ဤလုပ်ဆောင်ချက်သည် operating system မှပေးသော Select System Call မှ အခြေခံ. ရွေးချယ်သည်။
Syntax: Int Socket_select (array & array & array & array & array), array & array & $ tv_sec [int $ tv_usec = 0))
Parametermer
Value ကိုပြန်သွားပါ
ဥပမာ -
$serverSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_bind($serverSocket, '127.0.0.1', 8888); socket_listen($serverSocket); $clientSockets = array($serverSocket); $write = $except = array(); while (true) { $read = $clientSockets; // 用于监视读事件的socket数组// 使用socket_select()等待事件发生if (socket_select($read, $write, $except, 0) < 1) { continue; } // 检查是否有新的客户端连接if (in_array($serverSocket, $read)) { $clientSocket = socket_accept($serverSocket); $clientSockets[] = $clientSocket; echo "New client connected." . PHP_EOL; // 从读事件数组中移除服务器socket $key = array_search($serverSocket, $read); unset($read[$key]); } // 处理已连接的客户端发送的数据foreach ($read as $clientSocket) { $data = socket_read($clientSocket, 1024); if ($data === false) { // 客户端断开连接$key = array_search($clientSocket, $clientSockets); unset($clientSockets[$key]); socket_close($clientSocket); echo "Client disconnected." . PHP_EOL; } else { // 处理客户端发送的数据echo "Received data: " . $data . PHP_EOL; } } } // 关闭服务器socket socket_close($serverSocket);
အထက်ပါဥပမာသည် Multiplexing ကိုအကောင်အထည်ဖော်ရန် Socket_select () function ကိုအသုံးပြုသောရိုးရှင်းသော TCP server တစ်ခုကိုပြသသည်။ ကွင်းဆက်တွင်ဤအဖြစ်အပျက်ကို Socket_select () ပေါ်ပေါက်လာရန်စောင့်ပါ။ ဤနည်းလမ်းသည် client connections မျိုးစုံကိုတစ်ပြိုင်နက်တည်းကြိုးတစ်ချောင်းဖြင့်တစ်ပြိုင်တည်းကိုင်တွယ်နိုင်သည်။