编程须知
操作系统
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 中是不允许的。