<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## swoole_event_add swoole_event_add函數用于將一個socket加入到swoole的reactor事件監聽中。此函數可以用在Server或Client模式下。 ~~~ bool swoole_event_add(int $sock, mixed $read_callback, mixed $write_callback = null, int $flags = null); ~~~ 參數1可以為以下三種類型: * int,就是文件描述符,包括swoole_client的socket,以及第三方擴展的socket(比如mysql) * stream資源,就是stream_socket_client/fsockopen 創建的資源 * sockets資源,就是sockets擴展中 socket_create創建的資源,需要在編譯時加入 ./configure --enable-sockets 參數2為可讀回調函數,參數3為可寫事件回調,可以是字符串函數名、對象+方法、類靜態方法或匿名函數,當此socket可讀時回調指定的函數。 參數4為事件類型的掩碼,可選擇關閉/開啟可讀可寫事件,如SWOOLE_EVENT_READ,SWOOLE_EVENT_WRITE,或者SWOOLE_EVENT_READ | SWOOLE_EVENT_WRITE > swoole_event_add在swoole1.6.2+之后可用 > 第3,4個參數在1.7.1版本后可用,用于監聽可寫事件回調,以及設置讀寫事件的監聽 在Server程序中使用,可以理解為在worker/taskworker進程中將此socket注冊到epoll事件中。 在Client程序中使用,可以理解為在客戶端進程中將此socket注冊到epoll事件中。 ~~~ $fp = stream_socket_client("tcp://www.qq.com:80", $errno, $errstr, 30); fwrite($fp,"GET / HTTP/1.1\r\nHost: www.qq.com\r\n\r\n"); swoole_event_add($fp, function($fp) { $resp = fread($fp, 8192); //socket處理完成后,從epoll事件中移除socket swoole_event_del($fp); fclose($fp); }); echo "Finish\n"; //swoole_event_add不會阻塞進程,這行代碼會順序執行 ~~~ ### 回調函數 * 在可讀事件回調函數中必須使用fread、recv等函數讀取Socket緩存區中的數據,否則事件會持續觸發,如果不希望繼續讀取必須使用Swoole\Event::del移除事件監聽 * 在可寫事件回調函數中,寫入socket之后必須調用Swoole\Event::del移除事件監聽,否則可寫事件會持續觸發 * 執行fread、socekt_recv、socket_read、Swoole\Client::recv返回false,并且錯誤碼為EAGAIN時表示當前Socket接收緩存區內沒有任何數據,這時需要加入可讀監聽等待EventLoop通知 * 執行fwrite、socket_write、socket_send、Swoole\Client::send操作返回false,并且錯誤碼為EAGAIN時表示當前Socket發送緩存區已滿,暫時不能發送數據。需要監聽可寫事件等待EventLoop通知
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看