Laravel 执行时间记录和统计工具
统计接口时间的方法有不少,比如修改nginx日志格式记录时间,或者直接使用网关统计,但是都不够简便,于是我自己写了这一个统计包,不需要修改服务器配置,不需要安装软件,也不需要后台运行进程,当然也足够简单。
写这个包的目的是用来统计接口运行时间的,方便发现响应慢的接口,然后优化。
laravel-running-time
- 支持统计响应时间最长的请求
- 支持日志延迟批量写入以提高性能
- 支持单个请求地址分析
- 支持友好的日期筛选
- 实测100W行日志,2.3秒可分析完
欢迎大家使用和提意义
本帖已被设为精华帖!
本帖由系统于 5年前 自动加精
https://github.com/y-ui/laravel-running-ti...
可以先array_filter下
@lovecn 是的,这样性能更好,代码也更好看~感谢~
可以,哈哈,学会了
file()
的用法 :stuck_out_tongue_winking_eye:改了一下
RunningTimeCommand.php
,使用了fgets
配合yield
减少内存的使用。同时$pathTimes
只记录比较、统计的结果,不记录所有的数据,减少内存使用。https://github.com/y-ui/laravel-running-ti...
修改了一下 pathTime 来兼容使用
yield
的写法.没使用

yield
之前使用

yield
@ruby 非常优秀的想法,内存使用大大减少,不过真实场景下的计算时间并不像你测试的那样也减少了,我用我的真实数据跑了一下,计算时间增加了大概 34%左右,应该和每行日志的长度有关,内容越多,fgets导致的额外时间开销越多,我用最简单的日志测试计算时间增加15%,总体来说这个时间换来的内存节约非常划算 :+1:
没有yield:
使用yield:
@y-ui 时间增加应该是的。昨天一不小心写了个 bug 进去,
php artisan running-time
没有统计到最小时间,提了个 PR@ruby 哈哈,改出来的BUG不少呢,你这个pr我就不合并了
@y-ui 还有什么其他 bug 吗 :joy:
@ruby
我merge了你的第一个pr,然后修复了以上BUG,并且加入了 --lessMemory 选项使用你的读取文件方式。
默认还是使用file函数读取,但是使用yield,有效减少了多个日志文件统计时的内存开销,因为数据越多使用fgets花费时间越多,400W数据时 时间差达到了100%
请教一个问题,接口响应时间按道理应该是请求结束时间-请求开始时间,为什么我看你的源代码是请求开始时间-依赖包加载的时间尼
我也整理了一个类似的,支持
cli
和web
端的https://github.com/alicfeng/laravel-runtim...@returnfalse 接口响应时间应该是服务器
@returnfalse 这个并不是中间件加载的时间,中间件有两种执行方式,一种是处理请求前,一种是返回请求后,我这里就是返回请求后执行,所以实际相当于请求结束的时间,具体可以看laravel的中间件文档
@y-ui 嗯,明白了,一看文档我就懂了,谢谢,还是要交流,感觉有时候还是有知识盲区
有个疑问 执行php artisan vendor:publish --provider='RunningTime\RunningTimeServiceProvider' 没有生成配置文件runningtime.php
可以 在数据库中保存这个api响应时间吗