我想记录来自我网站的每个请求,包含所有参数以及生成响应所需的时间。该网站建在Laravel 5.我确实尝试了不同的方法,但没有运气。我的主要问题是如何获得总执行时间。
谢谢
答案 0 :(得分:2)
您可以使用Terminable Middleware在已将HTTP响应发送到浏览器后对其进行记录。
要获得总时间,您可以将const string& acc
的结果与laravel常数microtime(true)
进行比较。该常量定义在LARAVEL_START
,即框架的入口点
答案 1 :(得分:0)
Blackfire (https://blackfire.io/)。
它非常直接安装它会告诉你所有的 函数调用以及从中生成响应所需的时间。 这将包括处理器处理+ DB查询等的时间。
Laravel调试栏(对API不太方便,但是 普通的laravel应用程序非常适用于此)
两种顶级解决方案都非常缺乏设置,只需要很少或根本不需要设置。
还有另一种选择,但我认为它会非常复杂,你可能需要自己构建完整的堆栈(不推荐)。这是可以做的事情
Laravel Middle ware + monolog + loggly 您将需要设置一个新的http全局中间件堆栈,该堆栈将在调用每个路由时调用。
您可以在这里阅读如何创建中间件 - > http://laravel.com/docs/5.1/middleware#defining-middleware
创建后,将Request数组推送到laravel日志 (http://laravel.com/docs/5.1/errors#logging)使用类似的东西 此
日志::信息($ requestArrayInfo); .. //通过服务进行查询 提供者侦听查询事件 (http://laravel.com/docs/5.1/database)
最后使用loggly(https://www.loggly.com/docs/php-monolog/)。它将帮助您放置laravel日志中的所有内容 记录。
我不建议你选择最后一个选项。如果您试图找出哪条路线速度最慢,最好启用apache / Nginx的访问日志,并使用blackfire分析运行这些URL +参数,以了解URL缓慢的原因。
答案 2 :(得分:0)
这样做的一种方法是直接向您的应用添加中间件,该应用会监听并捕获您应用处理的所有请求和响应。然后它将日志转储到文本文件或将其发送到外部服务。
请参阅有关主题的the article。