我没有太多的经验来诊断更长响应时间的来源,所以我很想知道更有经验的一些方法。
我有一个简单的分页记录索引页面,每次点击加载新页面时,它都表示25条记录的响应时间略长于300毫秒。拉取记录的查询并不复杂,可能300毫秒也不长。但是我仍然想知道如何找到占据大部分时间的东西,因为它感觉它需要花费一些时间。
我可以使用哪些工具或方法来找出任何瓶颈?提前谢谢。
答案 0 :(得分:1)
DebugBar是一种很好的方式,可以更好地了解Laravel App的执行情况。它将打破所有SQL查询并提供计时。
除了DebugBar之外,添加一个简单的Benchmarking类是我经常使用的另一种策略。要执行此操作,请在应用程序的最开始处启动计时器。这是我过去使用过的一个示例类(进行了一些调整,但没有测试下面的代码):
<?php
class Benchmark
{
public static $events = [];
public static function start()
{
static::$events = [];
static::bench('start');
}
public static function end()
{
static::bench('end');
}
public static function bench($event)
{
static::$events[$event] = static::time();
}
public static function time()
{
list($msec, $sec) = explode(" ", microtime());
return ($msec+$sec) - static::$events['start'];
}
public static function report()
{
print_r(static::$events);
}
}
实施将是:
Benchmark::start();
Benchmark::bench('finished big query');
Benchmark::end();
然后在执行结束时在某处打印出基准:
<?php Benchmark::report() ?>
检查MySQL
大多数情况下,减速是数据库。
如果您发现特定查询减慢了页面加载速度,请使用MySQL slow query log进一步隔离问题,使用MySQL explain
命令剖析查询以进行改进。