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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 退出協程 [TOC] > 在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`: ## 類原型: ~~~ namespace Swoole; class ExitException extends \Exception { public function getStatus():mixed public function getFlags():int } ~~~ ## 函數原型 ~~~ public function getStatus():mixed ~~~ 獲取exit($status)退出時的傳入的`status`參數, 支持任意的變量類型 ~~~ public function getFlags():int ~~~ 獲取exit退出時所處的環境信息掩碼, 目前有以下掩碼 ~~~ SWOOLE_EXIT_IN_COROUTINE //協程中退出 SWOOLE_EXIT_IN_SERVER //服務中退出 ~~~ ## 使用方法 #### 基本使用 ~~~ 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 $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); ~~~ #### 關閉內置協程, 允許在異步中退出 ~~~ 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>

                              哎呀哎呀视频在线观看