Laravel从终端看到执行时间

时间:2013-12-05 22:53:37

标签: php laravel-4

我是一名新的Laarvel用户。在我使用Codeigniter之前。在Codeigniter中,通过执行tail -f很容易看到日志文件和执行时间。我看到Laravel在app / storage / logs目录中有日志文件。问题是日志文件只给我错误,它没有给出任何执行时间或查询时间。有人可以帮助我如何从命令行查看执行时间?我也尝试过Ioic-sharma探测器。

2 个答案:

答案 0 :(得分:12)

默认情况下,由于Laravel的默认记录器设置不支持此功能,因此Laravel甚至不会将执行时间记录到日志中。

您必须自己构建它或找到一个为您执行此操作的库。有几个分析器库,但大多数是通过在页面底部显示一个分析器栏来实现的。

这是我以前用过的一个不错的项目:https://github.com/barryvdh/laravel-debugbar

如果您确实要记录每个请求的执行时间,我已经采用了粗略的方法,将其添加到您的global.php文件中。

$timeStart = microtime(true);

App::finish(function() use ($timeStart) {
    $diff = microtime(true) - $timeStart;
    $sec = intval($diff);
    $micro = $diff - $sec;
    Log::debug(Request::getMethod() . "[" . Request::url() . "] Time: " . round($micro * 1000, 4) . " ms");
});

这很可能会放在一个更好的地方,或者至少早点启动计时器,但这是一个快速的例子。

答案 1 :(得分:0)

为了直接设置记录,Laravel 4.1默认记录所有查询(不确定是否包含4.1中的执行时间)。为了查看当前请求的查询日志,您只需获取查询日志并将其添加到Laravel日志中,如下所示:

$queries = \DB::getQueryLog();   // Get query log for this request
\Log::info($queries);            // Add it to the laravel log

5.0中唯一的区别是Laravel默认不再记录查询(但肯定包括执行时间),因此您需要将以下内容添加到要分析的脚本的开头:

\DB::connection()->enableQueryLog();

注意:如果您是从根命名空间工作,或者如果您使用"则不需要使用反斜杠。这些函数来自根命名空间。

以下是我在日志中的样子:

array (
  0 => 
  array (
    'query' => 'select * from `users` where `users`.`deleted_at` is null limit 10 offset 0',
    'bindings' => 
    array (
    ),
    'time' => 0.4899999999999999911182158029987476766109466552734375,
  ),
)

如果你想从命令行看到它,只需执行var_dump($ queries)而不是将它们发送到你的日志。