Метод start класса Stopwatch
Метод start класса Stopwatch запускает измерение времени.
Он открывает новое событие или секцию с указанным именем.
Первым параметром передаётся имя события, вторым - необязательная категория.
После вызова метода секундомер начинает отсчёт времени до вызова метода stop.
Синтаксис
public function start(string $name, ?string $category = null): StopwatchEvent
Пример
Давайте запустим секундомер для события 'article' и остановим его:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentStopwatchStopwatch;
class ArticleController extends AbstractController
{
public function index(): Response
{
$stopwatch = new Stopwatch();
$stopwatch->start('article');
usleep(100000);
$event = $stopwatch->stop('article');
return new Response($event->getDuration() . ' ms');
}
}
?>
Результат выполнения кода:
"100 ms"
Пример
Давайте запустим секундомер с указанием категории 'controller':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentStopwatchStopwatch;
class ArticleController extends AbstractController
{
public function index(): Response
{
$stopwatch = new Stopwatch();
$stopwatch->start('article', 'controller');
usleep(50000);
$event = $stopwatch->stop('article');
return new Response($event->getCategory());
}
}
?>
Результат выполнения кода:
"controller"
Пример
Давайте запустим несколько событий и сравним их длительность:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentStopwatchStopwatch;
class ArticleController extends AbstractController
{
public function index(): Response
{
$stopwatch = new Stopwatch();
$stopwatch->start('first');
usleep(100000);
$stopwatch->stop('first');
$stopwatch->start('second');
usleep(200000);
$stopwatch->stop('second');
$res = [
$stopwatch->getEvent('first')->getDuration(),
$stopwatch->getEvent('second')->getDuration()
];
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"100, 200"