사용자가 브라우저를 종료하거나 페이지에서 벗어나면 mysql 데이터베이스를 업데이트하는 방법을 아는 사람이 있습니까? 나는 1로 설정된 값을 가지고 있고 그러한 이벤트에서 0으로 설정하기를 원합니다. 나는 몇 주 동안 이걸 가지고 벽에 머리를 치고 있었고 어떤 도움이라도 대단히 감사 할 것입니다. 감사합니다. PHP를 사용하고 있습니다. 나는 몸을 하역 할 때 그것을 시도했지만 그것이 내가 원하는 것을하지 않습니다.브라우저에서 데이터베이스 업데이트
답변
하지 마십시오. 브라우저에 의존하여 (beforeunload
이벤트를 통해) 또는 다른 메커니즘을 통해 알림을 보내기 만하면됩니다. 브라우저가 충돌하거나 사용자가 컴퓨터를 절전/최대 절전 모드로 전환하면 어떻게됩니까?
PING과 같은 다른 옵션을 고려해 볼 수 있습니다! 브라우저가 Ajax를 통해 1 분마다 호출 할 수있는 방법으로 그가 살아 있다고 말합니다. 당신이해야 할 일은 1:30 분 이상 ("last_seen TIMESTAMP
또는 뭔가 전화") 이상 "살아있는"항목을 검색하고 "살아"0으로 설정하는 MySQL 프로 시저를 만드는 것입니다.이 절차는 수 무작위 요청 (PHP 세션 정리 메커니즘과 거의 비슷 함)에서 호출되었습니다.
이렇게하면 PING을 얻을 수 있기 때문에 사용자가 계속있을 것입니다. 주기적으로 요청하고 사용자가 멈 추면 안전하게 PING하지 않을 것이라고 말할 수 있습니다. 더 이상 (가벼운 지연을 일으키지 만 받아 들일 수는 있지만). 이것은 또한 사용자 보안을 보장합니다.
PHP는 페이지가 ACCESSED 일 때만 내용을 변경할 수 있습니다. PHP 관점에서 볼 때, 스크립트가 종료 되 자마자 트랜잭션이 끝났으며 더 이상 그 페이지와 관련이 없습니다.
이 작업을 수행 할 수있는 유일한 방법
스크립트가 실행 열린 연결을 유지하고, 같은 것을 사용한다 :<?php
function shutdown()
{
// here you change the value on your db...
}
register_shutdown_function('shutdown');
// send the data to client
echo "anything";
flush();
// sleep for a lot of time... 99999 seconds...
sleep(99999);
?>
일부 웹 호스팅은 PHP 프로세스를 몇 초 후에 (1과 1의 25와 같이) "종료"하므로 실용적이지 않습니다. 또한 소수의 사용자에게는 문제가되지 않지만 홍수로 인한 공격도 차단됩니다. –
- 1. 업데이트 데이터베이스
- 2. 데이터베이스 업데이트
- 3. 데이터베이스 업데이트
- 4. 앱 업데이트 데이터베이스 부분 업데이트
- 5. 레일 업데이트 데이터베이스 스키마
- 6. SQLite 데이터베이스 업데이트 문제
- 7. Java : 롤백 데이터베이스 업데이트?
- 8. 교차 데이터베이스 업데이트?
- 9. 데이터베이스 승인 된 업데이트
- 10. sqlite 데이터베이스 업데이트
- 11. 데이터베이스 업데이트 주문
- 12. 고성능 데이터베이스 업데이트 (오라클)
- 13. XAML에서 데이터베이스 직접 업데이트
- 14. 업데이트 SQL Server 데이터베이스
- 15. 레거시 데이터베이스 - 업데이트 열
- 16. PHP : 데이터베이스 테이블 업데이트
- 17. 모델에서 데이터베이스 행 업데이트
- 18. SpeedUp 데이터베이스 업데이트
- 19. C# 데이터베이스 업데이트
- 20. Asp.net의 데이터베이스 (Sql) 업데이트
- 21. Java로 주기적으로 데이터베이스 업데이트
- 22. 업데이트 데이터베이스 SQLite는
- 23. Django의 비동기 데이터베이스 업데이트?
- 24. 데이터베이스 업데이트 문제 (jdbc)
- 25. LinqToSQL 데이터베이스 업데이트 중
- 26. 데이터베이스 업데이트 문제
- 27. C# 데이터베이스 업데이트
- 28. DataSet에서 데이터베이스 업데이트
- 29. 내 데이터베이스 업데이트
- 30. 설치 중 데이터베이스 업데이트
'내가 값을 1로 설정을하고 이러한 이벤트 0으로 설정합니다 .' -이 값을 사용하여 온라인/오프라인 사용자를 확인하고 있습니까? – drudge
'onUnload'가 왜 효과가 없습니까? 그건 정확히 당신이 찾고있는 것처럼 들리 네요. – eykanal
@eykanal : 대부분의 브라우저는 언로드 중에 (언로드하기 전에) 경쟁 조건이있는 일부 브라우저에서 아약스 요청을 보낼 수 없습니다 : 창이 닫히기 전에 비동기 아약스 요청이 전송됩니까? 당신은 언로드 중에 (전에) ajax 요청을 보내지 않으려 고합니다. – BalusC