Проведите время в сессии и сравните разницу
У меня есть код, который я хочу проверить на разницу во времени. Приведенный ниже код проверит время начала и время окончания, а затем отобразит общее время.
Когда я впервые загружаю страницу, время инициализируется в сеансе. После этого я подожду несколько секунд, а затем поменяю $test
переменная к 1
, if
затем будет выполнен и отображать Total time taken
, Тогда сессия будет уничтожена и все сброшено.
Однако код не работает. Время в микросекундах для отражения ожидаемых секунд не отображается??
<?php
if(!isset($_SESSION['time_start'])){
$_SESSION['time_start']=microtime(true);
}
$test ='';
if (!empty($test)){
$time_end = microtime(true);
$display = $time_end - $_SESSION['time_start'];
echo "Total time taken: $display";
session_destroy();
}
?>
1 ответ
Вместо того, чтобы делать это (и вручную изменять и обновлять скрипт после изменения переменной $test):
$test ='';
if (!empty($test)){
Попробуйте этот скрипт вместо:
session_start();
$current_time = microtime(true);
if (isset($_SESSION['time_start']) && !empty($_SESSION['time_start']))
{
$time_end = $current_time;
$display = $time_end - $_SESSION['time_start'];
echo "Total time taken: $display";
$_SESSION['time_start'] = '';
session_destroy();
}
else
{
$_SESSION['time_start'] = $current_time;
echo "Initial time variable set, press refresh.";
}
Я думаю, что главная проблема в том, что вы пропустили вызов метода session_start() в верхней части скрипта.
Что произойдет с вышеуказанным сценарием, так это то, что сначала будет запущена часть else, так как часть сеанса time_start изначально не установлена и / или пуста. Это установит данные в сеансе. На следующей странице загрузится оператор if, и он покажет время между обновлениями.