編程須知
操作系統(tǒng)
webman同時支持linux系統(tǒng)和windows系統(tǒng)下運行。但是由于workerman在windows下無法支持多進程設置以及守護進程,因此windows系統(tǒng)僅僅建議用于開發(fā)環(huán)境開發(fā)調(diào)試使用,正式環(huán)境請使用linux系統(tǒng)。
啟動方式
linux系統(tǒng)
php start.php start
此命令為調(diào)試模式,一般在開發(fā)時使用,文件更新monitor進程會自動檢測reload,打印數(shù)據(jù)時在終端顯示,終端關(guān)閉后webman也會自動關(guān)閉。
php start.php start -d
此命令為守護進程模式,在正式環(huán)境使用,關(guān)閉終端后webman繼續(xù)運行,打印數(shù)據(jù)終端無顯示。
更新代碼需要執(zhí)行php start.php reload
或者 php start.php restart -d
更新。
windows系統(tǒng)
執(zhí)行windows.bat
或者使用命令 php windows.php
啟動,按ctrl c 停止。
windows系統(tǒng)不支持stop reload status reload connections等命令。
windows不支持守護進程模式。
常駐內(nèi)存
webman是常駐內(nèi)存的框架,一般來說,php文件載入后便以opcode的方式常駐內(nèi)存,不會再次從磁盤讀取(模版文件除外)。
所以正式環(huán)境業(yè)務代碼或配置變更后需要執(zhí)行php start.php reload
才能生效。
如果是更改進程相關(guān)配置或者安裝了新的composer包需要重啟php start.php restart
。
為了方便開發(fā),webman自帶一個monitor自定義進程用于監(jiān)控業(yè)務文件更新,當有業(yè)務文件更新時會自動執(zhí)行reload。
此功能只在workerman以調(diào)試模式運行(啟動時不加-d
)才啟用。windows用戶需要執(zhí)行windows.bat
或者php windows.php
才能啟用。
關(guān)于輸出語句
在傳統(tǒng)php-fpm項目里,使用echo
var_dump
等函數(shù)輸出數(shù)據(jù)會直接顯示在頁面里,而在webman開發(fā)過程中(調(diào)試模式啟動時),這些輸出往往顯示在終端上,并不會顯示在頁面中(模版文件中的輸出除外)。
不要執(zhí)行exit
die
語句
執(zhí)行die或者exit會使得進程退出并重啟,導致當前請求無法被正確響應。
不要執(zhí)行pcntl_fork
函數(shù)
pcntl_fork
用戶創(chuàng)建一個進程,這在webman中是不允許的。