<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 功能強大 支持多語言、二開方便! 廣告
                # 啟動與停止 注意Workerman啟動停止等命令都是在命令行中完成的。 要啟動Workerman,首先需要有一個啟動入口文件,里面定義了服務監聽的端口及協議。可以參考[入門指引--簡單開發實例部分](315113) 這里以[workerman-chat](http://www.workerman.net/workerman-chat)為例,它的啟動入口為start.php。 ### 啟動 以debug(調試)方式啟動 ```php start.php start``` 以daemon(守護進程)方式啟動 ```php start.php start -d``` ### 停止 ```php start.php stop``` ### 重啟 ```php start.php restart``` ### 平滑重啟 ```php start.php reload``` ### 查看狀態 ```php start.php status``` ## debug和daemon方式區別 1、以debug方式啟動,代碼中echo、var\_dump、print等打印函數會直接輸出在終端。 2、以daemon方式啟動,代碼中echo、var\_dump、print等打印會默認重定向到/dev/null文件,可以通過設置```Worker::$stdoutFile = '/your/path/file';```來設置這個文件路徑。 3、以debug方式啟動,終端關閉后workerman會隨之關閉并退出。 4、以daemon方式啟動,終端關閉后workerman繼續后臺正常運行。 ## 什么是平滑重啟? 平滑重啟不同于普通的重啟,平滑重啟可以做到在不影響用戶的情況下重啟服務,以便重新載入PHP程序,完成業務代碼更新。 平滑重啟一般應用于業務更新或者版本發布過程中,能夠避免因為代碼發布重啟服務導致的暫時性服務不可用的影響。 **注意:只有在on{...}回調中載入的文件平滑重啟后才會自動更新,啟動腳本中直接載入的文件或者寫死的代碼運行reload不會自動更新。** ## 平滑重啟原理 WorkerMan分為主進程和子進程,主進程負責監控子進程,子進程負責接收客戶端的連接和連接上發來的請求數據,做相應的處理并返回數據給客戶端。當業務代碼更新時,其實我們只要更新子進程,便可以達到更新代碼的目的。 當WorkerMan主進程收到平滑重啟信號時,主進程會向其中一個子進程發送安全退出(讓對應進程處理完畢當前請求后才退出)信號,當這個進程退出后,主進程會重新創建一個新的子進程(這個子進程載入了新的PHP代碼),然后主進程再次向另外一個舊的進程發送停止命令,這樣一個進程一個進程的重啟,直到所有舊的進程全部被置換為止。 我們看到平滑重啟實際上是讓舊的業務進程逐個退出然后并逐個創建新的進程做到的。為了在平滑重啟時不影響客用戶,這就要求進程中不要保存用戶相關的狀態信息,即業務進程最好是無狀態的,避免由于進程退出導致信息丟失。
                  <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>

                              哎呀哎呀视频在线观看