Метод lap класса Stopwatch
Метод lap класса Stopwatch позволяет зафиксировать промежуточный отрезок времени внутри уже запущенного события. Секундомер должен быть предварительно запущен методом start. При вызове lap закрывается текущий отрезок и сразу открывается новый, поэтому событие продолжает идти, а в его истории появляется ещё один замер. Метод не принимает параметров и возвращает объект StopwatchEvent текущего события.
Синтаксис
$stopwatch->lap(string $name): StopwatchEvent
Пример
Давайте запустим секундомер, сделаем паузу, поставим промежуточную метку методом lap и посмотрим на количество отрезков:
<?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->lap('article');
return new Response(count($event->getPeriods()));
}
}
?>
Результат выполнения кода:
2
Пример
Давайте поставим несколько промежуточных меток и выведем количество отрезков:
<?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);
$stopwatch->lap('article');
usleep(100000);
$stopwatch->lap('article');
usleep(100000);
$event = $stopwatch->stop('article');
return new Response(count($event->getPeriods()));
}
}
?>
Результат выполнения кода:
3
Пример
Давайте сохраним каждую метку в массив и выведем длительность каждого отрезка:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentStopwatchStopwatch;
class ArticleController extends AbstractController
{
public function index(): Response
{
$stopwatch = new Stopwatch();
$stopwatch->start('article');
$res = [];
usleep(100000);
$res[] = $stopwatch->lap('article')->getDuration();
usleep(100000);
$res[] = $stopwatch->lap('article')->getDuration();
usleep(100000);
$res[] = $stopwatch->stop('article')->getDuration();
return new Response(implode(', ', $res));
}
}
?>
Результат выполнения кода:
"100, 100, 100"