向symfony Profiler性能指标添加自定义里程碑

nr7wwzry  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(125)

我想记录应用程序中几个代码块的执行时间。
是否可以向symfony profiler性能选项卡添加自定义数据?(参见下图)
下面是一些伪代码来说明我想要实现的目标:

PerformanceProfiler::start('load foo data');

$data = $this->foo->load();

PerformanceProfiler::done('load foo data');

This related question不要求编程解决方案,所以我决定编写一个新问题。

rxztt3cl

rxztt3cl1#

使用Symfony's Stopwatch component
与他们的示例不同,要让它出现在时间轴中,你必须将秒表作为服务注入。因此,要在控制器中使用它,你需要做如下操作:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Stopwatch\Stopwatch;

class MyController extends AbstractController
{
    public function someAction(Stopwatch $stopwatch): Response
    {
        // Giving it a category name will also give it
        // its own colour in the timeline, which is nice
        $stopwatch->start("My task's name", 'Optional category name');

        // Do the work you want to time

        $stopwatch->stop("My task's name");

        // Do anything else you want to do
    }
}

当然,您可以通过服务中的构造函数注入它,等等。
我相信您现在已经不需要它了,但我来这里是为了寻找答案,但没有找到,所以希望这能帮助其他人😊

相关问题