2013-01-31 3 views
0

나는 세션이 준비 될 때, 즉 세션 15 분 전과 세션을 통해 특정 버튼을 보여주는 서비스를 제공합니다.UNIX 타임 스탬프를 기반으로 예정된 세션 선택

최근에 요청한 모든 세션을 풀어 타임 스탬프를 분석 한 다음 해당 세션이 곧 시작될 경우 특정 ID를 추출하여이 작업을 수행하고 있습니다. 여기 코드는 다음과 같습니다

$session_check_query = "SELECT * FROM requested_sessions WHERE username_t = '{$_SESSION['username']}'"; 
$session_check_process = mysql_query($session_check_query); 

date_default_timezone_set($_SESSION['timezone']); 
$current_time = time(); 

while ($sessions = mysql_fetch_array($session_check_process)) { 
    if ($sessions['time_from_t'] - $current_time <= 900 && $current_time - $sessions['time_from_t'] > 0 && $sessions['accepted'] == 1) { 
     $session_id = $sessions['id']; 
    } 
} 

문제는 내가 루프에서 $ SESSION_ID 에코 때 출력 1, 2, 3, 4.이이 데이터베이스 내 모든 세션이 사항을 충족하는지 느끼는 것을 의미하는 것입니다 그들이 하나가 아닌 기준.

이 코드에 문제가 있습니까? time_from_t는 UNIX 형식입니다.

답변

0

time()은 시간대에 독립적입니다. 이는 항상 UTC 시간을 반환합니다 (이 사실은 the comments에 묻어 있음). 시간대의 더 강력한 처리는 DateTime 개체를 처리 할 수 ​​있습니다 :

$date = new DateTime('now', new DateTimeZone($_SESSION['timezone'])); 
$current_time = $date->format("U"); 

어느 쪽이든, 다음 단계는 $current_time 변수를 확인하고 수학은 잘못된 것입니다 어디에 time_from_t보고하는 것입니다.

+0

음,'time()'은 UNIX 타임 스탬프 *를 반환하는데, 이것은 정의 상 시간대에 독립적입니다. 그 사실에 대해 논평 할 필요는 없습니다. 시간대에 종속적 인 UNIX 타임 스탬프 *와 같은 것은 없습니다. – deceze

관련 문제