編程須知
操作系統
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 重啟才能生效。