ThinkPHP 6.0 默认不记录内存使用日志,需手动调用 memory_get_peak_usage(true) 等 PHP 函数获取内存数据,并通过 Log::info() 写入日志;推荐在中间件中全局记录请求内存峰值,确保 log 配置 level 包含 'info' 且避免提前 exit。

ThinkPHP 6.0 默认不记录“内存使用日志”,它没有内置的内存监控开关或自动写入内存数据到日志文件的功能。但你可以通过手动方式在当前请求中获取并记录内存使用情况,关键在于主动调用 PHP 原生函数 + 合理插入日志写入点。
在控制器或中间件中获取当前内存使用量
PHP 提供了几个核心函数用于查看内存状态,最常用的是:
- memory_get_usage(true):获取当前已分配的内存字节数(含未释放的)
- memory_get_peak_usage(true):获取本次请求至今内存使用的峰值
- memory_get_usage():不带参数时返回当前实际使用的内存(不含底层预留空间)
建议优先使用 memory_get_peak_usage(true),它更能反映请求真实压力。
将内存数据写入 ThinkPHP 日志
ThinkPHP 的日志类支持任意格式内容记录,只需调用 think\facade\Log 即可:
立即学习“PHP免费学习笔记(深入)”;
- 在控制器方法开头或结尾添加:
- 若需更详细信息,可一并记录:
执行后,该条日志会按配置写入 runtime/log/日期/xxx.log 中,搜索 Memory 即可定位。
确保日志能实时看到结果
注意两点避免“写了却看不到”:
- 确认
config/log.php中'level'包含'info'(默认通常包含) - 不要在日志写入后立即
exit或die,否则日志可能因未触发请求结束阶段而丢失(ThinkPHP 日志默认延迟写入) - 如需强制立即写入,可设
'realtime_write' => true(仅调试时启用,影响性能)
进阶:全局记录每个请求的内存峰值
推荐在中间件中统一处理,例如创建 app/middleware/MemoryLog.php:
- 在
handle()开头记录起始内存 - 用
$next($request)执行后续逻辑 - 在返回前计算差值并记录峰值
这样无需修改每个控制器,所有 HTTP 请求都会自动留下内存快照,便于排查高内存接口。



















