webman 启动慢主因是 php 脚本重复编译和自动加载,需启用 cli 模式 opcache、预加载关键文件、移除非必要 require;确认 opcache.enable_cli=1 生效,配置 opcache.preload 并设对用户,禁用 xdebug,部署时调用 opcache_reset()。

Webman 启动慢,八成卡在 PHP 脚本重复编译和自动加载上。开 OPcache 是必要动作,但只设 opcache.enable=1 不够——必须让 CLI 模式真正生效、预加载关键文件、并砍掉启动时无谓的 require。
Webman CLI 模式下 OPcache 必须显式启用
Webman 以 php start.php start 方式常驻运行,走的是 CLI SAPI,而 PHP 默认关闭 CLI 的 OPcache。不配 opcache.enable_cli=1,所有 Worker 进程每次处理请求都重新编译控制器、中间件、路由文件,缓存形同虚设。
- 运行
php -i | grep "Loaded Configuration File"确认 CLI 实际加载的php.ini路径 - 编辑该文件,在
[opcache]段落下确保有:opcache.enable=1和opcache.enable_cli=1 - Windows 下必须用绝对路径写
zend_extension="C:\php\ext\php_opcache.dll",extension=php_opcache.dll无效 - 改完执行
php -m | grep opcache,输出opcache才算加载成功
预加载 functions.php 和核心类避免首次请求延迟
Webman 启动时会按需加载大量文件,比如 app/functions.php、app/middleware/ 下的类、config/ 中的配置。这些文件若未预加载,首个请求就会触发集中编译,TTFB 拉高明显。
- 新建
opcache-preload.php,内容仅含:require_once __DIR__ . '/app/functions.php';和关键中间件类(如App\Middleware\Cors对应的文件) - 在 CLI 的
php.ini中添加:opcache.preload=/full/path/to/opcache-preload.php -
opcache.preload_user必须设为 Webman 进程运行用户(如www-data或当前 shell 用户),否则预加载失败且无报错 - 预加载文件里禁止出现
echo、file_get_contents()、$_SERVER等运行时逻辑,否则 PHP 启动直接报错
砍掉启动阶段的非必要 require_once
很多 Webman 项目在 start.php 或 bootstrap/app.php 里提前 require_once 一堆工具类、服务提供者,但这些类实际只在某些路由或命令中用到。它们被强制加载后又进不了 OPcache 预热范围,纯属拖慢启动。
- 检查
start.php开头是否有类似require_once __DIR__ . '/app/Helper/Util.php';的语句 - 把这类 require 移到对应控制器或命令的
handle()方法内,改为按需加载 - 确认 Composer 自动加载规则是否冗余:运行
composer dump-autoload --optimize生成静态映射,比 PSR-4 动态查找快得多 - 禁用开发期才需要的扩展,如
xdebug、blackfire,它们会让 CLI 启动时间翻倍
validate_timestamps=0 不等于“永远不更新”,部署必须联动
设 opcache.validate_timestamps=0 能省掉每次请求的 stat() 系统调用,但代价是代码更新后不会自动刷新缓存。Webman 常驻进程不重启,旧 opcode 就一直跑着。
- 上线部署脚本里必须加一步:
php -r 'opcache_reset();',确保所有 Worker 进程同步失效旧缓存 - 若用容器部署,可在 entrypoint 中加入该命令;若用宝塔或自建脚本,把它塞进 reload 流程
- 别依赖
opcache.revalidate_freq,它在validate_timestamps=0时完全不生效 - OPcache 命中率低于 95%(查
opcache_get_status()['opcache_statistics']['hit_rate'])时,优先检查是否因文件数超限被踢出,调高opcache.max_accelerated_files到 20000+
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











