這是php網站上關於stream_select 的例子
http://php.net/manual/en/function.stream-socket-server.php
程式是從遍曆串連的用戶端是不是serversocket來判斷串連, 遍曆每個用戶端都fread來讀,根據讀的結果是FALSE還是0判斷是不是中斷連線了,但是上面的程式一運行,cpu就上升,然後機器就卡住了,是不是這種判斷串連有斷開的方式有問題?
回複內容:
這是php網站上關於stream_select 的例子
http://php.net/manual/en/function.stream-socket-server.php
程式是從遍曆串連的用戶端是不是serversocket來判斷串連, 遍曆每個用戶端都fread來讀,根據讀的結果是FALSE還是0判斷是不是中斷連線了,但是上面的程式一運行,cpu就上升,然後機器就卡住了,是不是這種判斷串連有斷開的方式有問題?
運行這個例子,報了一堆錯誤,你沒報錯?
我修改了一下
$master = array();$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);$master[] = $socket;$read = $master;while (1) { $read = $master; $_w = $_e = null; $mod_fd = stream_select($read, $_w, $_e, 0); foreach ($read as $rstream) { $conn = stream_socket_accept($socket); if ($conn) { fwrite($conn, "Hello! The time is " . date("n/j/Y g:i a") . "\n"); $sock_data = fread($conn, 1024);// var_dump($sock_data); if ($sock_data === 0) { } elseif ($sock_data === false) { echo "Something bad happened" . PHP_EOL; } else { fwrite($conn, "You have sent :[" . $sock_data . "]\n"); } fclose($conn); } }}