編程須知

操作系統

webman 同時支持 linux 系統和 windows 系統下運行。但是由於 workerman 在 windows 下無法支持多進程設置以及守護進程,因此 windows 系統僅建議用於開發環境開發調試使用,正式環境請使用 linux 系統。

啟動方式

linux 系統

php start.php start

此命令為調試模式,一般在開發時使用,文件更新 monitor 進程會自動檢測 reload,打印數據時在終端顯示,終端關閉後 webman 也會自動關閉。

php start.php start -d

此命令為守護進程模式,在正式環境使用,關閉終端後 webman 繼續運行,打印數據終端無顯示。
更新代碼需要執行 php start.php reload 或者 php start.php restart -d 更新。

windows 系統

執行 windows.bat 或者使用命令 php windows.php 啟動,按 ctrl c 停止。
windows 系統不支持 stop reload status reload connections 等命令。
windows 不支持守護進程模式。

常駐內存

webman 是常駐內存的框架,一般來說,php 文件載入後便以 opcode 的方式常駐內存,不會再次從磁碟讀取(模版文件除外)。
所以正式環境業務代碼或配置變更後需要執行 php start.php reload 才能生效。
如果是更改進程相關配置或者安裝了新的 composer 包需要重啟 php start.php restart

為了方便開發,webman 自帶一個 monitor 自定義進程用於監控業務文件更新,當有業務文件更新時會自動執行 reload。
此功能只在 workerman 以調試模式運行(啟動時不加 -d)才啟用。windows 用戶需要執行 windows.bat 或者 php windows.php 才能啟用。

關於輸出語句

在傳統 php-fpm 項目裡,使用 echo var_dump 等函數輸出數據會直接顯示在頁面裡,而在 webman 開發過程中(調試模式啟動時),這些輸出往往顯示在終端上,並不會顯示在頁面中(模版文件中的輸出除外)。

不要執行 exit die 語句

執行 die 或者 exit 會使得進程退出並重啟,導致當前請求無法被正確響應。

不要執行 pcntl_fork 函數

pcntl_fork 用戶創建一個進程,這在 webman 中是不允許的。

composer 安裝組件

composer require xxx/xxx 安裝的組件需要 restart 重啟才能生效。