2014-02-26 5 views
0

사용자 세션을 저장하기 위해 perl과 mysql을 사용하고 있습니다. 사용자가 로그 아웃을 클릭하면 세션을 삭제할 수 있습니다. 그러나 세션이 만료되면 좀비처럼 데이터베이스를 채 웁니다. 따라서 모든 사용자 세션 데이터를 구문 분석하여 세션을 삭제하고 세션의 마지막 액세스 시간을 검색 한 다음 삭제해야합니다 (한 시간 이상 액세스하지 않은 경우). 그것 또한 해킹. 그 일을하는 깔끔한 방법이 있습니까? 세션이 만료되면 자동으로 삭제되는 것과 같은 mysql이있는 경우.mysql에서 만료 된 세션 삭제하기

답변

2

세션 테이블에서 세션의 마지막 액세스 시간을 나타내는 DATETIME 필드를 저장할 수 있습니다. 물론 사용자가 세션을 사용하여 리소스에 액세스 할 때마다이 필드를 업데이트 할 수 있습니다.

그런 다음 1 시간이 넘은 모든 세션을 삭제하는 cron에서 Perl 스크립트를 실행할 수 있습니다.

예 :

delete from SESSIONS where access_time < DATE_SUB(now(),interval 1 hour) 

이는 access_time 타임 스탬프 한 시간보다 이전 인 SESSIONS 테이블의 모든 레코드를 삭제합니다. 최근 1 시간 이내에 액세스 한 세션은 삭제되지 않습니다.

+0

u는 약간의 질문을 설명 할 수 있습니다 – gzix

+0

조금 더 설명하기 위해 제 대답을 편집했습니다. –

+0

u가 세션 테이블에 다른 열을 포함하는 방법을 알려 주실 수 있다면. – gzix