2012-06-22 3 views
0

두 개의 Unix 타임 스탬프를 비교해야하며 수학 문제가 있습니다. 나는 유닉스 타임 스탬프가 1970 년 1 월 1 일 이후의 초 수라는 것을 알고있다. 그러나 나는 수학에 잘못된 것을하고있다. 파일이 마지막으로 수정 된 시점으로부터 3 분이 지 났는지 여부를 감지하려고합니다. 경우에 해당해야하는 경우에도,Unix 타임 스탬프 비교

if (file_exists($filename)) { 
    $filemodtime = filemtime($filename); 
} 

$three_min_from_now = mktime(0, 3, 0, 0, 0, 0); 

if (time() >= $filemodtime + $three_min_from_now) { 
    // do stuff 
} else { 
    // do other stuff 
} 

그러나 다른 절은하지 않는 경우, 만족하고 계속 : 여기 내 코드입니다. 내 문제는 내 수학이라고 생각해. 누군가 도울 수 있습니까? 감사. 삼분를 '때

if((time() - $filemodtime) >= 180) 

그것은 명시 적 계산의 필요성을 제거합니다

+0

당신이 올바르게 설정했는지 확인하기 위해 변수의 값을 인쇄 해보십시오 : 당신은 단지 $ filemodtime에 180를 추가 오프 더 나은 것 - 그것은 사실 매우, 매우 확률이 낮다. – andrewsi

+0

유닉스 타임 스탬프이기 때문에 알기가 어렵습니다. $ three_min_from_now 변수가 올바르게 작동합니다. $ filemodtime은 파일이 마지막으로 수정 된시기를 올바르게 표시합니다. – sehummel

+0

시간은 1/1/70부터의 시간을 기준으로합니까? – sehummel

답변

5
$three_min_from_now = mktime(0, 3, 0, 0, 0, 0); 

if (time() >= $filemodtime + $three_min_from_now) { 

당신이 시간()가 큰 경우 확인 여기에 일을하는지 파일 수정에 대한 유닉스 타임 스탬프와 3 분 후의 유닉스 타임 스탬프보다 더 낫다.

if (time() >= $filemodtime + (60 * 3)) { 
+0

완벽 함. 고마워, 앤드류. – sehummel

+0

전적으로 환영합니다. – andrewsi

1
if (file_exists($filename)) { 
    $filemodtime = filemtime($filename); 
} 

if (time() - $filemodtime > (3*60)) { 
    // it been more than 3 minutes 
} else { 
    // do other stuff 
} 

는 단순히 두 개의 정수 타임 스탬프 값 ...

3

나의 제안은 다음과 같이 귀하의 경우 문을 다시 실행하는 것입니다 비교 지금부터 '발생

관련 문제