2014-05-14 11 views
0

시간 차이를 확인하고 싶은 코드가 있습니다. 아래의 코드는 시작 시간과 종료 시간을 확인한 다음 걸린 총 시간을 표시합니다.세션에서 시간을 잡고 차이를 비교하십시오.

처음 페이지를로드 할 때 세션에서 시간이 초기화됩니다. 그 후에 나는 약간 를 기다린 다음 $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(); 
} 

?> 
+2

PHP 스크립트 자체에서 변수를 기다리고 어떻게 변경합니까? 그것이 다른 요청에 있다면,'$ test'는 존재하지 않을 것이고 원래의 스크립트는 실행을 마칠 것입니다. 그리고 각 스크립트 맨 위에'session_start()'가 필요합니다. – jeroen

+0

죄송합니다. 'session_start()'를 잊어 버렸습니다. 이제 작동합니다. – sg552

+0

@ sg552 왜'$ _SESSION' 슈퍼 글로벌에'microtime '을 저장하고 있습니까? 나는 당신의 코드가 당신이 생각하는 것을하고 있다고 생각하지 않는다. – LifeQuery

답변

1

오히려 (당신이 수정 한 후 $ 테스트 변수를 수동으로 스크립트를 새로 고침 & 변경)이 일을보다 :

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."; 
} 

I :

$test =''; 

if (!empty($test)){ 

대신이 스크립트를 사용해보십시오 주요 문제는 스크립트 상단에서 'session_start()'를 호출하지 않았다는 것입니다.

위 스크립트에서 'else'부분은 세션의 'time_start'부분이 처음 설정되거나 비어있는 경우 먼저 실행됩니다. 이렇게하면 데이터가 세션에 설정됩니다. 다음 페이지는 if 문이 실행되도록로드하고 새로 고침 사이의 시간을 표시합니다.