Проведите время в сессии и сравните разницу

У меня есть код, который я хочу проверить на разницу во времени. Приведенный ниже код проверит время начала и время окончания, а затем отобразит общее время.

Когда я впервые загружаю страницу, время инициализируется в сеансе. После этого я подожду несколько секунд, а затем поменяю $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, и он покажет время между обновлениями.

Другие вопросы по тегам