应立即关闭调试模式、生成路由/配置/类库映射/字段缓存文件,并启用OPcache与请求缓存。具体包括:设APP_DEBUG=false;运行php think optimize:route、config、autoload、schema;配置opcache.enable=1等参数;开启request_cache=true。

如果您正在运行 ThinkPHP5 应用,但发现页面响应缓慢、路由解析耗时、自动加载频繁或数据库查询重复执行,则很可能是未启用关键性能优化机制。以下是开启 ThinkPHP5 性能优化模式的具体方法:
一、关闭调试模式并确认生产环境配置
调试模式会强制禁用所有缓存、实时解析模板与路由、记录完整日志,极大拖慢执行速度。必须确保其完全关闭。
1、检查项目根目录是否存在 .env 文件,若存在,确认其中包含:
APP_DEBUG=false
2、若无 .env 文件,则检查 config/app.php 中是否显式设置:
'app_debug' => false
立即学习“PHP免费学习笔记(深入)”;
3、执行命令验证当前环境状态:
php think env:show,输出中应显示 APP_DEBUG 值为 false
二、生成并启用路由缓存
路由缓存将全部路由规则预编译为静态 PHP 数组,避免每次请求都动态注册和匹配,显著提升路由解析效率。
1、在命令行中执行:
php think optimize:route
2、确认生成成功:检查 runtime/route.php 文件是否存在且非空
3、在 config/app.php 中启用缓存检测:
'route_check_cache' => true
三、生成配置缓存文件
配置缓存将所有 config/ 目录下的 PHP 配置文件合并为单个 init.php,跳过数十次文件加载与解析,减少 IO 与语法分析开销。
1、执行命令:
php think optimize:config
2、确认生成路径:runtime/init.php 已存在
3、生成后,框架将不再加载 config/ 下任何 PHP 配置文件,全部由 init.php 提供
四、生成类库映射文件
类库映射(classmap)提供 O(1) 级别的类路径查找能力,替代 PSR-4 的目录遍历与 is_file() 判断,大幅提升自动加载性能。
1、执行命令:
php think optimize:autoload
2、确认生成文件:runtime/classmap.php 已写入完整类名到路径的映射数组
3、该文件由 ThinkPHP 自动加载器在运行时优先读取,无需额外配置
五、生成数据表字段缓存
字段缓存可避免每次模型查询前执行 SHOW COLUMNS 查询,尤其在宽表或多关联场景下节省大量数据库往返开销。
1、确保数据库连接配置已切换为线上环境(特别是 database.php 中的账号密码)
2、执行命令:
php think optimize:schema
3、检查生成路径:runtime/schema/{database_name}.{table_name}.php 是否按表创建
六、启用 OPcache 并正确配置 PHP 环境
OPcache 是 PHP 层最基础的字节码缓存,ThinkPHP 优化效果严重依赖其高命中率;仅开启 opcache.enable=1 不足以生效。
1、编辑 php.ini,确认以下参数已设置:
opcache.enable=1
opcache.enable_cli=1
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.memory_consumption=128
opcache.max_accelerated_files=20000
2、重启 PHP-FPM 或 Web 服务器使配置生效
3、执行 php -i | grep opcache 验证各项值已正确加载
七、开启请求缓存(适用于低实时性接口)
请求缓存对整个 HTTP 请求响应进行全量缓存,适合内容更新频率低、用户可见性要求不高的页面或 API。
1、在 config/app.php 中设置:
'request_cache' => true
2、可选:配置缓存规则,在 config/request_cache.php 中定义 URL 匹配与缓存时间策略
3、注意:该功能与 APP_DEBUG=false 强绑定,开启后需确保无调试信息泄露风险



















