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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 退出協程 > 在Swoole低版本中, 協程中使用exit強行退出腳本會導致內存錯誤導致不可預期的結果或coredump, 在Swoole服務中使用exit會使整個服務進程退出且內部的協程全部異常終止導致嚴重問題 > Swoole長期以來一直禁止開發者使用exit, 但開發者可以使用拋出異常這種非常規的方式, 在頂層catch來實現和exit相同的退出邏輯 > 4.2.2版本及以上允許腳本(未創建http_server)在只有當前協程的情況下exit退出 Swoole**`4.1.0`**版本及以上直接支持了在`協程`, `服務事件循環`中使用PHP的`exit`, 此時底層會自動拋出一個可捕獲的`Swoole\\ExitException`, 開發者可以在需要的位置捕獲并實現與原生PHP一樣的退出邏輯. --- `Swoole\\ExitException`繼承于`Exception`且新增了兩個方法`getStatus`和`getFlags`: 類原型: --- ```php namespace Swoole; class ExitException extends \Exception { public function getStatus():mixed public function getFlags():int } ``` 函數原型 --- ```php public function getStatus():mixed ``` 獲取exit($status)退出時的傳入的`status`參數, 支持任意的變量類型 ```php public function getFlags():int ``` 獲取exit退出時所處的環境信息掩碼, 目前有以下掩碼 ```C SWOOLE_EXIT_IN_COROUTINE //協程中退出 SWOOLE_EXIT_IN_SERVER //服務中退出 ``` 使用方法 --- #### 基本使用 ```php function route() { controller(); } function controller() { your_code(); } function your_code() { co::sleep(.001); exit(1); } go(function () { try { route(); } catch (\Swoole\ExitException $e) { assert($e->getStatus() === 1); assert($e->getFlags() === SWOOLE_EXIT_IN_COROUTINE); return; } }); ``` #### 帶狀態碼的退出 ```php <?php $exit_status = 0; go(function () { try { exit(123); } catch (\Swoole\ExitException $e) { global $exit_status; $exit_status = $e->getStatus(); } }); swoole_event_wait(); exit($exit_status); ``` #### 關閉內置協程, 允許在異步中退出 ```php swoole_async_set([ 'enable_coroutine' => false ]); swoole_timer_after(1000, function () { exit; }); ```
                  <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>

                              哎呀哎呀视频在线观看