2014-06-19 2 views
0

정확한 영어로 내 문제를 설명하기 위해 최선을 다할 것입니다.서버 시간과 자바 스크립트 카운트 다운 동기화

나는 setinterval로 timeleft (서버 시간으로 계산)를 표시하는 ajax에서 전체 카운트 다운을가집니다. 목표는 타임 레프트가 어떤 목표에 도달 할 때 한 번만 함수를 호출하는 것입니다.

$timeLeft = strtotime($wallet->date_upd)- time(); 
if ($timeLeft <= 3) 
{ 
    function() 'this function update or not $wallet->date_upd to add time' 
} 

아약스 카운트 다운이 글로벌이며 전송 및 렌더링 지연으로 인해 여러 사용자가 함수를 호출 할 수 있습니다. 어떤 아이디어입니까?

+0

무엇이 문제인가? –

+0

함수가 이미 호출되었는지 여부에 관계없이 서버에서 유효성을 검사 할 수는 없습니까? 어떤 사용자라도 사용자간에 시간을 동기화하려고 아무리 어려워도 클라이언트의 기능을 언제든지 호출 할 수 있습니다. –

+0

mysql에서 bool insert를 사용하여 함수가 호출되었는지 확인하려고했습니다. 그러나 지연과 함께,이 기능은 한 번 이상 호출 될 수 있습니다 – user3755663

답변

0

나는 timleft가 끝나고 스크립트가 실행될 때 date_upd을 새 시간으로 업데이트한다고 가정합니까?

그런 경우 업데이트를 수행하고 영향을받는 행이 있는지 확인할 수 있습니다.
쿼리의 WHERE 더 이상 작동하지 않습니다와 affected_rows은 0

$new_date_upd = date('Y-m-d H:i:s', strtotime('+2 hours')); 

mysql_query("UPDATE wallet SET date_upd = '{$new_date_upd}' WHERE date_upd = '{$wallet->date_upd}'"); 
if (mysql_affected_rows() > 0) { 
    // this script is the only one doing this stuff 
} 

것보다 다른 스크립트가 더 빨랐다 경우 그래서 MySQL의에서 작업 뭔가해야합니다.

자신의 서버를 관리하고 몇 가지 물건을 설치할 수 있다면 Redis.io는 고급 memcache와 같은 메모리 기능을 수행하는 훌륭한 도구이며 체크 아웃 할 것을 권장합니다. 좋은 방법으로 '잠금'

+0

당신은 내 주인입니다! 고맙습니다 – user3755663

관련 문제