计算 Laravel 5 的每个页面加载中的查询数
Posted
技术标签:
【中文标题】计算 Laravel 5 的每个页面加载中的查询数【英文标题】:Count number of queries in each page load of Laravel 5 【发布时间】:2016-12-09 20:44:19 【问题描述】:我试图通过侦听查询事件来实现这一点,但我似乎不知道我是如何获得计数的。这只是检索查询列表,因为无法修改回调函数以返回计数变量:
DB::listen(function ($query)
var_dump('<pre>'.$query->sql.</pre>);
);
我需要一个解决方案来计算 Laravel 执行的每个页面的查询。
【问题讨论】:
您可以使用$queries = DB::getQueryLog();
,但您应该先启用日志:DB::connection()->enableQueryLog();
当我想在生产中使用它时我应该这样做吗?
不建议仅用于调试!你可以使用if (App::environment('local')) DB::enableQueryLog();
但我需要这个用于生产站点中的特定用户
Laravel 可以选择将所有为当前请求运行的查询记录到内存中。请注意,在某些情况下,例如在插入大量行时,这可能会导致应用程序使用过多的内存。 -> Doc
【参考方案1】:
超级老问题,但是当我在这里寻找一种方法时,这就是我最终的结果。似乎不是获取计数的内置方法,但只需执行此类操作即可满足您的需求;
$count = 0;
DB::listen(function ($query) use (&$count)
$count++;
);
您可能希望将计数存储在更合适的位置,但这会让您和任何其他从 Google 来到这里的人大致了解。
【讨论】:
为我工作!!以上是关于计算 Laravel 5 的每个页面加载中的查询数的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Session 总是改变 Laravel 5.4 中的每个刷新/请求