Webman 已是高并发 PHP 项目事实首选,其性能优势源于常驻内存架构、无反射扫描、无服务容器魔法、默认连接池、精简核心(<400KB)、Trie 路由及零侵入式迁移设计。

Webman 不是“未来可能成为首选”,它已经是大量高并发 PHP 项目事实上的首选——尤其当你需要在不牺牲开发效率的前提下,把单机吞吐量从几百 RPS 拉到几千甚至上万时。
Webman 的性能优势不是理论值,而是启动后就生效的运行态事实
传统 FPM 框架每次请求都要重载 composer/autoload.php、重新解析 config/app.php、重建中间件栈和路由树;而 Webman 在执行 php start.php start 后,这些结构全部固化在内存里。你写的每个 app\controller\UserController 类、每条 Route::get() 规则、每个 app\middleware\Auth 实例,都只初始化一次。
- 没有反射扫描:不依赖运行时
ReflectionClass解析控制器方法,避免隐式性能损耗 - 无服务容器魔法:不强制使用绑定/解析/延迟加载,控制器方法参数直接由框架注入
support\Request实例 - 连接池默认启用:只要配置了
config/database.php并安装workerman/mysql,Db::table()就自动走异步连接池,不是“可选优化”,而是开箱即用
它不靠功能堆砌取胜,而是靠“不做哪些事”来保持高速
Webman 的核心代码体积不到 400KB,support/ 目录下只有 Request.php、Response.php、Helper.php 等十几个关键文件。它不内置 ORM、不打包模板引擎、不实现队列驱动——这些全交由插件(如 webman/redis、webman/view)按需加载。
- 没用
__callStatic做门面代理,所以不会有动态方法调用开销 - 没做自动服务发现,
config/bootstrap.php里要手动include自定义启动逻辑,但换来的是启动时间稳定在 8–12ms(PHP 8.2+ Linux) - 路由匹配用的是前缀树(Trie),不是正则遍历,万级路由规则下仍保持 O(1) 匹配复杂度
常驻内存不是便利性升级,而是能力边界的重新定义
当你的应用不再随请求销毁,很多在 FPM 下“做不了”或“不敢做”的事,突然变得自然:
-
app/process/TimerProcess.php里写一个每秒执行的定时器,不用配crontab,也不用担心进程被回收 - 全局静态变量(如
static $cache = [];)可在多个请求间共享,配合pcntl_fork或Worker::$pid隔离,就能实现轻量级本地缓存 -
app/controller/ChatController.php可直接继承Webman\WebSocket\Controller,同一份代码同时处理 HTTP 和 WebSocket 连接,不需要额外网关或协议转换
php artisan serve 换成 php start.php start,配置路径从 config/database.php 指向同名文件,控制器命名空间从 App\Http\Controllers 改为 app\controller。其余逻辑,几乎零修改。



















