计算 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()-&gt;enableQueryLog(); 当我想在生产中使用它时我应该这样做吗? 不建议仅用于调试!你可以使用if (App::environment('local')) DB::enableQueryLog(); 但我需要这个用于生产站点中的特定用户 Laravel 可以选择将所有为当前请求运行的查询记录到内存中。请注意,在某些情况下,例如在插入大量行时,这可能会导致应用程序使用过多的内存。 -> Doc 【参考方案1】:

超级老问题,但是当我在这里寻找一种方法时,这就是我最终的结果。似乎不是获取计数的内置方法,但只需执行此类操作即可满足您的需求;

$count = 0;
DB::listen(function ($query) use (&$count) 
    $count++;
);

您可能希望将计数存储在更合适的位置,但这会让您和任何其他从 Google 来到这里的人大致了解。

【讨论】:

为我工作!!

以上是关于计算 Laravel 5 的每个页面加载中的查询数的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 中的查询条件

Laravel Session 总是改变 Laravel 5.4 中的每个刷新/请求

Laravel 5.5中的一对多关系

Laravel 6 会话和 CSRF Coo​​kie 未设置——每次页面加载的会话数据库中的新条目

如何在 Laravel 的每个页面上加载我的动态菜单项?

Laravel 5 正在加载旧的 CSS