必须启用调试模式与运行日志才能获取thinkphp6.x性能数据,方式包括:一、入口文件定义app_debug常量;二、.env配置app_debug和app_trace;三、config/app.php开启show_run_time等开关;四、database.php启用debug和log_sql;五、用log::record或debug::remark添加自定义trace标记。

如果您在ThinkPHP6.x项目中希望获取详细的运行耗时、内存占用、SQL执行详情等性能数据,则必须正确启用运行日志与调试模式。以下是多种可靠且互不干扰的启用方式:
一、通过入口文件顶部定义APP_DEBUG常量
此方式是框架识别调试状态的最早期、最权威途径,强制在框架加载前生效,确保所有性能分析组件(如Trace面板、SQL日志、运行时间统计)被完整初始化。
1、打开项目入口文件public/index.php,在文件最顶部、任何require或include语句之前插入以下代码:
2、define('APP_DEBUG', true);
3、在同位置紧接着添加PHP错误显示控制语句,避免白屏无报错:
4、ini_set('display_errors', '1'); error_reporting(E_ALL);
5、清空runtime/目录下全部内容(含~runtime.php、cache、log、temp等子目录)。
6、刷新页面,确认右下角出现Trace调试面板,并在面板中查看“运行时间”“内存开销”“SQL日志”等栏目是否可展开。
二、通过.env环境变量配置APP_DEBUG与APP_TRACE
.env文件是TP6推荐的多环境配置方式,其值会覆盖其他配置源,且能同时激活运行日志与页面Trace功能,适用于开发环境统一管理。
1、确认项目根目录存在名为.env的纯文本文件(若无,请复制.example.env并重命名,确保编码为UTF-8无BOM)。
2、用记事本或VS Code等编辑器打开.env,在空白行写入以下两行,严格禁止等号两侧出现空格或引号:
3、APP_DEBUG=true
4、APP_TRACE=true
5、检查Web服务器配置:Nginx需在fastcgi_param中显式传递该变量,例如添加行:fastcgi_param APP_DEBUG $APP_DEBUG;
6、重启PHP-FPM进程或Swoole服务,确保.env被重新加载;若使用OPcache,执行opcache_reset()或设置opcache.revalidate_freq=0。
三、在config/app.php中启用性能相关开关项
该配置仅在APP_DEBUG已为true的前提下生效,用于精细化控制运行时性能信息的展示粒度,不影响调试模式本身,但决定Trace面板中各模块是否可见。
1、打开config/app.php文件,定位到return数组内部。
2、确保以下键值对存在且设为true:
3、'SHOW_RUN_TIME' => true,
4、'SHOW_ADV_TIME' => true,
5、'SHOW_DB_TIMES' => true,
6、'SHOW_CACHE_TIMES' => true,
7、'SHOW_USE_MEM' => true,
8、'SHOW_PAGE_TRACE' => true,
9、保存后清空runtime/cache/目录,防止旧缓存覆盖新配置。
四、启用SQL执行日志与绑定参数记录
开启调试模式后,SQL日志默认仅记录语句模板;要捕获实际执行的SQL及参数绑定值,需额外激活数据库层的日志增强机制。
1、打开config/database.php文件,找到'debug' => false配置项。
2、将其修改为:'debug' => true,
3、在同文件中确认log配置已启用,例如设置:'log_sql' => true,
4、访问任意触发数据库查询的页面,检查runtime/log/目录下生成的SQL日志文件,确认每条日志包含类似“SQL: SELECT * FROM user WHERE id = ? [params] => [1]”的完整结构。
5、若未出现参数值,检查是否启用了PDO预处理模拟(emulate_prepares=false),应设为true以确保参数可被日志捕获。
五、动态注入Trace信息与自定义性能标记
除自动采集外,开发者可在关键业务逻辑处手动插入Trace点,实现分段性能测量,辅助定位慢操作环节。
1、在控制器方法中调用think\facade\Log::record()记录自定义性能事件:
2、Log::record('start_api_auth', 'trace');
3、在认证逻辑结束后再次记录:
4、Log::record('end_api_auth', 'trace');
5、打开Trace面板的“调试”标签页,查找对应标记,观察两次记录之间的时间差。
6、也可使用think\facade\Debug::remark()与think\facade\Debug::getRange()组合进行毫秒级区间测量:
7、Debug::remark('api_begin');
8、Debug::getRange('api_begin', 'api_end');
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











