2011-01-25 2 views

ответ

2

microtime - Возвращает текущую метку времени Unix с микросекунд

<?php 
$time = microtime(TRUE); 

//...code here... 

print (microtime(TRUE)-$time). ' seconds'; 
24

Вызов microtime(true) функции для извлечения текущего времени с разрешением milisecond.

<?php 
$startTime = microtime(true); 

/*stuff is going on*/ 

echo "Elapsed time is: ". (microtime(true) - $startTime) ." seconds"; 
+1

+1 Я бы ответил то же самое. – Christian

+0

спасибо за ответ, но реализация этого в рамках не проста. кроме того, это неточно, потому что время обработки, используемое самой картой, не считается – jmint

+0

. Я ожидаю, что вам понадобится реальное прошедшее время, а не прошедшее время - «время рамки». Что касается внедрения его в существующий код, то самый простой (не обязательно лучший) способ может использовать синглтон, чтобы таймер был доступен глобально. – Mchl

0

Вы могли бы просто использовать стандартный тайм-аут в 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); 
+0

hmm, ваше предложение интересно, но у меня проблема с сохранением состояния моего процесса с помощью этой настройки, потому что в рамках функции shutdown я больше не могу обращаться к переменным контроллеров моей инфраструктуры – jmint

+0

, хотя есть возможное обходное решение для этого, используя глобальные переменные, но я все еще это рассматриваю. спасибо в любом случае :) – jmint

+0

Вам нужно передать переменные $ для контроллеров к функции shutdown, а это значит, что вы можете зарегистрировать ее только после того, как они были инициализированы ... см. edit. Я действительно использую этот метод для тайминга ловушки и возвращаю ответ, отформатированный моим outputController. –

0

Один из быстрых и точных сниппета я могу рекомендовать.

//Block of my complex code 
//... 

echo 'Exact time taken to run: ' . (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']) . ' seconds'; 
Смежные вопросы