stream_select怎麼樣判斷socket串連和斷開?

來源:互聯網
上載者:User
關鍵字 php
這是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);        }    }}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.