Как узнать время загрузки страницы Symfony? - PullRequest
1 голос
/ 15 марта 2012

У меня есть приложение symfony 1.4.x, и я хотел бы иметь возможность отображать время загрузки страницы.

В среде разработчика время загрузки отображается на панели инструментов отладки.

Как получить время загрузки этой страницы в приложении /% APP_NAME% / templates / layout.php?

enter image description here Спасибо

1 Ответ

1 голос
/ 19 марта 2012

В общем, чтобы измерить время выполнения в php, вы используете что-то вроде этого:

$start = microtime(true /*get as float*/);

//some code goes here (i.e. your symfony request dispatching)

$end = microtime(true);
echo sprintf("some code executed for %.3f seconds", $end - $start);

Хитрость с фреймворком Symfony заключается в том, чтобы вставить ваш код в хорошее место, мои предложения:

  • используйте цепочку фильтров (если вы знакомы с этим механизмом).Просто вставьте свой фильтр перед любым другим, запишите первую отметку времени $ start и вычислите разницу в файле макета
  • или IMHO более уродливые, но чуть более точные - взломайте фронт-контроллер Symfony, чтобы записать свою временную метку $ start перед вызовом отправки

КонечноВычисление разницы времени загрузки страницы в файле макета имеет свои недостатки, поскольку не рассчитывает время рендеринга всей страницы, только до момента отображения макета (что является приемлемым, поскольку макет рендеринга является одной из последних задач диспетчеризации запросов, НО макет)не всегда отображается)

Чтобы решить эту проблему, вы можете использовать свой фильтр в конце запроса для вывода javascript, который добавит время загрузки страницы к документу (в значительной степени то, что Symfony делает со своей панелью инструментов отладки)

...