РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1074 of 1361 menu

Метод getSectionEvents класса Stopwatch

Метод getSectionEvents класса Stopwatch возвращает массив событий, которые были записаны в указанной секции. Первым параметром передаётся имя секции, события которой нужно получить. Если секция не открывалась или не существует, метод выбросит исключение InvalidArgumentException.

Метод удобно использовать для анализа производительности: после остановки секундомера можно получить все события секции и вывести их длительность.

Синтаксис

public function getSectionEvents(string $id): array

Пример

Давайте запустим секундомер, откроем секцию 'abcde', выполним несколько событий и получим все события этой секции:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Stopwatch\Stopwatch; class ArticleController extends AbstractController { public function index(): Response { $stopwatch = new Stopwatch(); $stopwatch->openSection(); $stopwatch->start('event1', 'abcde'); $stopwatch->stop('event1'); $stopwatch->start('event2', 'abcde'); $stopwatch->stop('event2'); $stopwatch->stopSection('abcde'); $events = $stopwatch->getSectionEvents('abcde'); foreach ($events as $name => $event) { echo $name . ': ' . $event->getDuration() . ' ms' . PHP_EOL; } return new Response('done'); } } ?>

Результат выполнения кода:

event1: 0 ms event2: 0 ms

Пример

Давайте получим события секции по умолчанию, которая называется '__root__':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Stopwatch\Stopwatch; class ArticleController extends AbstractController { public function index(): Response { $stopwatch = new Stopwatch(); $stopwatch->start('article'); $stopwatch->stop('article'); $events = $stopwatch->getSectionEvents('__root__'); $res = array_keys($events); return new Response(implode(', ', $res)); } } ?>

Результат выполнения кода:

"article"

Пример

Давайте попробуем получить события несуществующей секции 'user':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Stopwatch\Stopwatch; class ArticleController extends AbstractController { public function index(): Response { $stopwatch = new Stopwatch(); try { $events = $stopwatch->getSectionEvents('user'); } catch (\InvalidArgumentException $e) { return new Response($e->getMessage()); } return new Response('ok'); } } ?>

Результат выполнения кода:

"Section \"user\" is not started."

Смотрите также

  • класс Stopwatch,
    который измеряет время выполнения кода
  • метод openSection,
    который открывает новую секцию
  • метод stopSection,
    который останавливает секцию
  • метод getEvent,
    который возвращает конкретное событие
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить