2011-02-23 6 views
0

나는 ajax, php, mysql을 처음 사용했다. 나는 무언가를 아주 un-scalable하고 있고 적당한 방향에있는 점을 희망하고 있었다는 것을 생각한다.Ajax와 mysql을 가진 타이머

지금은 시간이 포함 된 페이지를 얻으려면 아약스를 사용하여 작동하는 타이머가 내 사이트에 있습니다. 요청 된 시간을 가진 페이지는 mysql 데이터베이스에 "목표"시간을 쿼리하고 "목표 시간"과 현재 시간 (시간() 사용)의 차이를 비교합니다. Ajax는 1000 밀리 초의 간격으로 설정됩니다. 때로는 사용자가 건너 뛸 시간 (초)입니다.

그래서 지금 모든 사용자에게 매 초마다 내 mysql 서버가 쿼리됩니다. ajax에 의해 검색된 페이지 만 mysql 서버에 매초마다 쿼리 한 다음 값이 저장되고 사용자가 해당 페이지의 값을 쿼리하는 방법이 있습니까?

내가하고 싶은 일 : 시간이 걸릴 때마다 페이지를 내 mysql 서버에 쿼리하고 요청시이 페이지를 사용자에게 제공하십시오. = 1 (mysql 쿼리) x 1000 (아약스로 검색 한 페이지) 작업 (주어진 1000 명의 사용자)

내가 가지고있는 것 : 매초 mysql 서버를 쿼리하는 ajax에 의해 검색된 페이지. = 1000 (mysql 쿼리) x1000 (아약스에 의해 조사 된 페이지) 작업 (1000 명의 사용자 지정).

또한 적절한 간격으로 설정해야 할 부분은 무엇입니까? 500 밀리 초?

+0

필자가 잘 알고 있듯이 PHP 스크립트를 백그라운드에서 계속 실행하고 AJAX를 사용하여 트리거 대신 출력을 가져 오려고합니다. 서버에서 전체 프로세스가 매우 힘든 것으로 들립니다. "목표 시간"을 한 번 얻을 수 있고 setTimeout을 1000ms마다 1 초씩 줄이기 위해 반복 할 수 있습니까? AJAX를 통해 정기적으로 체크인하여 불일치를 재설정하고 보상 할 수 있습니다. – tkm256

+0

@ tkm256, 모든 사람들이 동기화되도록 매초마다 확인해야합니다. 대화방의 모든 참가자가 볼 수있는 하루 종일 다양한 카운트 다운 타이머가 있습니다. –

답변

0

페이지가 처음로드 될 때 데이터가 PHP time("U");으로 설정되는 자바 스크립트 변수를 설정할 수 있습니다.이 변수는 현재 서버의 유닉스 타임 스탬프입니다. 당신이 delta를 호출 int를주는

var foo = new Date; // Generic JS date object 
var unixtime_ms = foo.getTime(); // Returns milliseconds since the epoch 
var unixtime = parseInt(unixtime_ms/1000); 

:

다음 페이지를 렌더링 할 때, 클라이언트에게 유닉스 시간을 뺍니다. 이제 JavaScript 만 사용하여 (아약스 없음), 1 초 타이머를 설정하여 시간을 업데이트 할 수 있습니다. 계산은 delta입니다.