Мне нужно определить, как долго работает функция PHP.Определите, как долго PHP выполняется до сих пор
Каковы некоторые опции, чтобы узнать, как долго выполняется некоторый код PHP для запуска?
Я использую рамки zend.
Мне нужно определить, как долго работает функция PHP.Определите, как долго PHP выполняется до сих пор
Каковы некоторые опции, чтобы узнать, как долго выполняется некоторый код PHP для запуска?
Я использую рамки zend.
microtime - Возвращает текущую метку времени Unix с микросекунд
<?php
$time = microtime(TRUE);
//...code here...
print (microtime(TRUE)-$time). ' seconds';
Вызов microtime(true)
функции для извлечения текущего времени с разрешением milisecond.
<?php
$startTime = microtime(true);
/*stuff is going on*/
echo "Elapsed time is: ". (microtime(true) - $startTime) ." seconds";
Вы могли бы просто использовать стандартный тайм-аут в PHP, и реализовать shutdown функцию.
function say_goodbye() {
if (connection_status() == CONNECTION_TIMEOUT) {
... do your special processing to save the process state here
... then formulate a response for the browser
}
} // function say_goodbye()
register_shutdown_function("say_goodbye");
Обратите внимание, что вы можете установить функцию выключения, чтобы принять параметры
EDIT
function say_goodbye($controller1,$controller2) {
if (connection_status() == CONNECTION_TIMEOUT) {
... do your special processing to save the process state here
... then formulate a response for the browser
}
} // function say_goodbye()
$ctl1 = new DBController();
$ctl2 = new OPController();
register_shutdown_function("say_goodbye",$ctl1,$ctl2);
hmm, ваше предложение интересно, но у меня проблема с сохранением состояния моего процесса с помощью этой настройки, потому что в рамках функции shutdown я больше не могу обращаться к переменным контроллеров моей инфраструктуры – jmint
, хотя есть возможное обходное решение для этого, используя глобальные переменные, но я все еще это рассматриваю. спасибо в любом случае :) – jmint
Вам нужно передать переменные $ для контроллеров к функции shutdown, а это значит, что вы можете зарегистрировать ее только после того, как они были инициализированы ... см. edit. Я действительно использую этот метод для тайминга ловушки и возвращаю ответ, отформатированный моим outputController. –
Один из быстрых и точных сниппета я могу рекомендовать.
//Block of my complex code
//...
echo 'Exact time taken to run: ' . (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) . ' seconds';
+1 Я бы ответил то же самое. – Christian
спасибо за ответ, но реализация этого в рамках не проста. кроме того, это неточно, потому что время обработки, используемое самой картой, не считается – jmint
. Я ожидаю, что вам понадобится реальное прошедшее время, а не прошедшее время - «время рамки». Что касается внедрения его в существующий код, то самый простой (не обязательно лучший) способ может использовать синглтон, чтобы таймер был доступен глобально. – Mchl