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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Server->reload [TOC] 重啟所有`Worker/Task`進程。 ~~~ bool Server->reload(bool $only_reload_taskworkrer = false) ~~~ * `$only_reload_taskworkrer`是否僅重啟`Task`進程 一臺繁忙的后端服務器隨時都在處理請求,如果管理員通過`kill`進程方式來終止/重啟服務器程序,可能導致剛好代碼執行到一半終止。 這種情況下會產生數據的不一致。如交易系統中,支付邏輯的下一段是發貨,假設在支付邏輯之后進程被終止了。會導致用戶支付了貨幣,但并沒有發貨,后果非常嚴重。 `Swoole`提供了柔性終止/重啟的機制,管理員只需要向`Server`發送特定的信號,`Server`的`Worker`進程可以安全的結束。 * `SIGTERM`: 向主進程/管理進程發送此信號服務器將安全終止 * 在`PHP`代碼中可以調用`$serv->shutdown()`完成此操作 * `SIGUSR1`: 向主進程/管理進程發送`SIGUSR1`信號,將平穩地`restart`所有`Worker`進程 * 在`PHP`代碼中可以調用`$serv->reload()`完成此操作 * `reload`有保護機制,當一次`reload`正在進行時,收到新的重啟信號會丟棄 * 如果設置了`user/group,Worker`進程可能沒有權限向master進程發送信息,這種情況下必須使用`root`賬戶,在`shell`中執行`kill`指令進行重啟 * `reload`指令對`addProcess`添加的用戶進程無效 ~~~ #重啟所有worker進程 kill -USR1 主進程PID ~~~ 1.7.7版本增加了僅重啟task\_worker的功能。只需向服務器發送SIGUSR2即可。 ~~~ #僅重啟task進程 kill -USR2 主進程PID ~~~ > 平滑重啟只對`onWorkerStart`或`onReceive`等在`Worker`進程中`include/require`的`PHP`文件有效,`Server`啟動前就已經`include/require`的`PHP`文件,不能通過平滑重啟重新加載 > 對于`Server`的配置即`$serv->set()`中傳入的參數設置,必須關閉/重啟整個`Server`才可以重新加載 > `Server`可以監聽一個內網端口,然后可以接收遠程的控制命令,去重啟所有`Worker`進程 ## Process模式 在`Process`模式下,來自客戶端的`TCP`連接是在`Master`進程內維持的,`worker`進程的重啟和異常退出,不會影響連接本身。 ## Reload有效范圍 `Reload`操作只能重新載入`Worker`進程啟動后加載的`PHP`文件,建議使用`get_included_files`函數來列出哪些文件是在`WorkerStart`之前就加載的`PHP`文件,在此列表中的`PHP`文件,即使進行了`reload`操作也無法重新載入。比如要關閉服務器重新啟動才能生效。 ~~~ $serv->on('WorkerStart', function($serv, $workerId) { var_dump(get_included_files()); //此數組中的文件表示進程啟動前就加載了,所以無法reload }); ~~~ ## APC/OpCache 如果`PHP`開啟了`APC/OpCache`,`reload`重載入時會受到影響,有`2`種解決方案 * 打開`APC/OpCache`的`stat`檢測,如果發現文件更新`APC/OpCache`會自動更新`OpCode` * 在`onWorkerStart`中執行`apc_clear_cache`或`opcache_reset`刷新`OpCode`緩存 ## 參考 * [附錄:Linux信號列表](https://wiki.swoole.com/wiki/page/158.html)
                  <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>

                              哎呀哎呀视频在线观看