다음은 가장 일반적으로 사용되는 방법 중 일부입니다.
먼저 관련된 데이터 테이블 구조, 네 가지 필드를 소개합니다.
코드 복사 코드는 다음과 같습니다. 다음:
uid: 사용자 ID
session_id: 사용자 로그인 후 시스템에서 생성된 session_id, PHP는 session_id를 사용할 수 있습니다. () 함수를 사용하여
login_time: login time
logout_time: logout time
을 가져옵니다.1. 정기적으로 서버. 구현 방법은 사용자가 로그인한 후 레코드에 uid, session_id, login_time을 삽입한 다음 클라이언트 js에 타이머를 설정하는 것입니다. 예를 들어 로그아웃 업데이트 목적을 달성하기 위해 10분마다 서버에 요청을 보냅니다. 물론 간격을 짧게 설정할수록 데이터가 정확해질 수 있지만, 실제 상황에 따라 적절한 값으로 설정할 수 있습니다. 웹게임의 거의 모든 요청이 ajax 요청이고 페이지를 새로 고칠 필요가 없기 때문에 이 방법은 웹게임에서 널리 사용됩니다.
2. 서버는 예약된 폴링 스크립트를 설정합니다. 이 방법은 서버 측에서 예약된 실행 스크립트를 작성하는 것입니다. 예를 들어 5분마다 한 번씩 실행합니다. 데이터베이스의 기록을 기반으로 각 세션의 session_id가 서버에 여전히 존재하는지 판단합니다. , logout_time이 업데이트되지 않으면 건너뜁니다. 이 방법도 온라인 시간을 정확하게 계산할 수 있지만 서버를 제어해야 한다는 단점이 있습니다. 그렇지 않으면 타이밍 스크립트를 설정할 수 없습니다. Linux 시스템은 crontab을 통해 이를 수행할 수 있고 Windows 시스템은 예약된 작업을 통해 이를 수행할 수 있습니다. 방금 가상 호스트를 구입했다면 이 방법도 적합하지 않습니다.
3. 사용자가 활성화될 때마다 로그아웃 시간을 업데이트합니다. 이런 방식으로 사용자가 비활성 상태이거나 로그아웃하면 로그아웃 시간이 자연스럽게 데이터베이스에 존재하게 됩니다. 이 기사에서 중점적으로 다루는 해결 방법이기도 합니다. 구현 방법은 아래와 같습니다.
먼저 사용자가 성공적으로 로그인한 후 uid와 session_id를 기록하고 현재 시간을 로그인 시간으로 사용하고 현재 시간인 600s를 로그아웃 시간으로 사용하여 데이터베이스에 삽입합니다.
코드 복사 코드는 다음과 같습니다.
$uid = $_SESSION['uid'] = $info[' id'] ;
$session_id = $_SESSION['session_id'] = session_id();
$login_time = time()
$logout_time = time() 600; INSERT INTO member_login(uid,session_id,login_time,logout_time) 값($uid,'$session_id',$login_time,$logout_time)";
mysql_query($sql);
그런 다음 매번 사용자 활동 시간, 즉 페이지를 클릭할 때마다 세션이 존재하는 경우, 즉 사용자가 로그인한 경우 사용자 로그아웃 시간이 업데이트됩니다.
코드 복사 코드는 다음과 같습니다.
if($_SESSION['uid']){
$uid = $_SESSION['uid']
$ session_id = $_SESSION['session_id'];
$ logout_time = time() 600;
$sql = "upDATE member_login SET logout_time=$logout_time WHERE uid=$uid AND sessi
mysql_query($sql) ;
}
이 방법의 장점은 구현이 비교적 간단하고 대부분의 웹사이트에 적용할 수 있으며 추가 서버 요구 사항이 없으며 사용자의 온라인 시간을 정확하게 계산할 수도 있다는 것입니다. .
단점도 뚜렷하고 데이터베이스 업데이트 작업으로 인해 시스템 부하가 늘어나지만 중소 규모 웹사이트에서는 문제가 되지 않습니다.
위 내용은 온라인 베이징 시간의 내용을 포함하여 PHP에서 온라인 베이징 시간으로 사용자의 온라인 시간을 계산하려는 시도를 소개한 것이며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.