2010-06-14 4 views
1

저는 여기에서 주변을 둘러 보았습니다. 그러나 내 설명에 맞는 것을 찾을 수는 없습니다.30 초 후에 MYSQL 데이터베이스를 업데이트하십시오.

30 초 후에 페이지를 새로 고치지 않으면 데이터베이스를 업데이트하고 싶습니다. 지난 30 초 이내에 그 사람이 페이지를 방문하지 않은 경우 (다른 사용자가 제출 한 양식) 내용을 가진 사람에게 전자 메일로 보내고 싶습니다.

내가 시도한 것은 매 30 초마다 새로 고쳐야하는 페이지를 만드는 것입니다. 그래서 31 초 후에 뭔가를하면 데이터베이스를 편집합니다 (새로 고쳐진 페이지가 새로 고쳐지지 않은 경우, 데이터베이스 편집이 실행됩니다).

이 작업이 복잡해지면 유감이지만 더 좋은 방법은있을 수 있습니다.

큰 그림은 일하다가 일종의 일을하려고하기 때문에 사람이 활발히 페이지를보고 있지 않으면 양식의 내용이 무엇이든간에 이메일을 받게됩니다. 페이지에는 입력 된 모든 양식 결과 테이블이 포함됩니다.

+0

소리가 무섭다 ... – Artefacto

답변

4

사용자가 페이지를 새로 고칠 때마다 타임 스탬프가있는 레코드를 만들어 데이터베이스를 업데이트 할 수 있습니다. 그런 다음, 타임 스탬프가 30 초 이상 경과하고 전자 메일을 시작하면 데이터베이스에서 규칙적으로 보이는 PHP 작업자를 가질 수 있습니다.

+0

아, 그게 더 쉬운 방법입니다. – Sam

+0

감사합니다. 나는 지금 날짜를 알아 냈다. \t \t \t \t \t 날짜 ("m/d/Y h : i : s a", 시간()); 30 초를 추가하려면 어떻게해야합니까? – Sam

+0

나는 당신이 좀 더 일관성을 줄 것입니다 mysql 안에 모든 날짜 시간을 할거 같아요 : 새로 고침에, 당신은 "update last_refresh set timestamp = NOW() user = ..."와 같은 일을하고, 만약 당신이 당신은 "최종 사용자로부터 DATEDIFF (NOW(), timestamp)> (30/(3600 * 24))"(테스트되지 않은, 나는 좀 더 Postgresql을 사용하고있다.) 사용자를 선택해야한다. –

1

나는 작업의 서버 측 부분의 PHP 솔루션을 제공 할 수 없습니다. 하지만 기본적으로 자바 스크립트 타이머 (예 : jquery timeout)를 설정하고 30 초 후에 서버에서 원하는 것을 수행하는 ajax 호출을 수행해야합니다 (db에 저장하고 이메일을 보내는 등).

나는 귀하의 요점을 알고 귀하의 조언이 어떻게 든 도움이되기를 바랍니다.

0

I는 다음과 같이 자바 스크립트를 사용하여 제안 : 당신이 필사적으로 다시로드해야하지만 사용자가 분명 당신이 그에게 창을 다시로드하는 것이 화가 될 경우
window.setTimeout("location.reload(true);", 3000);

이 물론이다.

+0

Youu는 페이지를 다시로드하지 않고도이 작업을 수행 할 수 있습니다. – Lizard

관련 문제