<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Swoole作為Server時,[回調函數](https://wiki.swoole.com/wiki/page/41.html)有很多。但可以簡單分個類: 1) 進程啟動時執行的:onStart、onManagerStart、onWorkerStart;onWorkerStop、onManagerStop、onShutdown;onWorkerError 2) 客戶端交互時觸發的:onReceive/onRequest/onPacket/onMessage、onOpen/onConnect、onClose 3) Task:onTask、onFinish 4) Timer:onTimer 事件執行順序: - 所有事件回調均在`$server->start`后發生 - 服務器關閉程序終止時最后一次事件是`onShutdown` - 服務器啟動成功后,`onStart/onManagerStart/onWorkerStart`會在不同的進程內并發執行。 - `onReceive/onConnect/onClose/onTimer`在worker進程(包括task進程)中各自觸發 - worker/task進程啟動/結束時會分別調`用onWorkerStart/onWorkerStop` - `onTask`事件僅在task進程中發生 - onFinish事件僅在worker進程中發生 - `onStart/onManagerStart/onWorkerStart` 3個事件的執行順序是不確定的 - UDP協議下只有`onReceive`事件,沒有`onConnect/onClose`事件 - 如果未設置`onPacket`回調函數,收到UDP數據包默認會回調`onReceive`函數 - `onOpen`事件回調是可選的:當WebSocket客戶端與服務器建立連接并完成握手后會回調此函數 實際使用的時候不是所有回調都可以使用的,例如UDP服務器沒有`onConnect/onClose`;例如接收數據,在WebSocket里使用onReceive,在HttpServer使用onRequest,在UDPServer使用onPacket。 示例: ``` php <?php $server = new \swoole_server("127.0.0.1",8088); $server->set(array( 'daemonize' => false, 'reactor_num' => 2, 'worker_num' => 4 )); $server->on('connect', function ($serv, $fd){ echo "client connect. fd is {$fd}\n"; }); $server->on('receive', function ($serv, $fd, $from_id, $data){ echo "client connect. fd is {$fd}\n"; }); $server->on('close', function ($serv, $fd){ echo "client close. fd is {$fd}\n"; }); // 以下回調發生在Master進程 $server->on("start", function (\swoole_server $server){ echo "On master start.\n"; }); $server->on('shutdown', function (\swoole_server $server){ echo "On master shutdown.\n"; }); // 以下回調發生在Manager進程 $server->on('ManagerStart', function (\swoole_server $server){ echo "On manager start.\n"; }); $server->on('ManagerStop', function (\swoole_server $server){ echo "On manager stop.\n"; }); // 以下回調也發生在Worker進程 $server->on('WorkerStart', function (\swoole_server $server, $worker_id){ echo "Worker start\n"; }); $server->on('WorkerStop', function(\swoole_server $server, $worker_id){ echo "Worker stop\n"; }); $server->on('WorkerError', function(\swoole_server $server, $worker_id, $worker_pid, $exit_code){ echo "Worker error\n"; }); $server -> start(); ```
                  <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>

                              哎呀哎呀视频在线观看