나는 세션과 동일한 테이블에 사용자 ID를 저장하고 CakePHP에서 데이터베이스 세션을 사용하고 있습니다. 그것은 가능성이 어떻게 든 데이터베이스의 한 필드를 업데이트 할 수있는 사용자 세션이 만료되면 감지 할 수 있습니까?cakephp 업데이트 세션 시간 제한 필드
사용자가 웹 사이트에서 수동으로 로그 아웃하지 않는 경우 (브라우저를 닫거나조차도 닫지 않음) 해당 세션을 테이블에서 제거 할 수 있어야합니다.
나는 세션과 동일한 테이블에 사용자 ID를 저장하고 CakePHP에서 데이터베이스 세션을 사용하고 있습니다. 그것은 가능성이 어떻게 든 데이터베이스의 한 필드를 업데이트 할 수있는 사용자 세션이 만료되면 감지 할 수 있습니까?cakephp 업데이트 세션 시간 제한 필드
사용자가 웹 사이트에서 수동으로 로그 아웃하지 않는 경우 (브라우저를 닫거나조차도 닫지 않음) 해당 세션을 테이블에서 제거 할 수 있어야합니다.
세션 데이터 정리는 가비지 수집 (gc)을 사용합니다. 이 가비지 수집 프로세스는 PHP 스크립트가 실행될 때만 호출됩니다. 즉, 정리할 수있을 때 바로 데이터를 정리하지 않지만 다른 PHP 스크립트가 실행 중일 때가 지 얼마되지 않아야 데이터를 정리할 수 있습니다. 가비지 콜렉션도 일부 리소스를 차지하므로 매번 실행되지는 않지만 각 스크립트 호출에 대해 실행될 확률이 있습니다. The default is that gc runs about once every 100 script invocations.
그러면 부실 데이터가 즉시 사라지지 않습니다. 오히려, 그것은 결국 청소 될 것입니다.
데이터베이스 세션은 일반 세션과 마찬가지로 잠시 후에 자동으로 정리됩니다. 그것이 그들의 시간표 *입니다. 여기 정확히 수동으로하고 싶습니까? – deceze
글쎄, 그게 내가 생각한거야. "1"(중간 보안 수준이므로 100 초 제한 시간)으로 제한 시간이 있습니다. 로그인을했는데 세션 데이터베이스에서 레코드를 볼 수 있습니다. 나는 MySQL 관리자로부터 잠시 (30 분 이상) 그것을 점검하고 페이지를 새로 고치고 다른 위치에서 같은 사용자 이름으로 로그인하려고 시도했지만 그 레코드는 삭제되지 않았다. 데이터베이스 테이블을 새로 고친 후에 마침내 삭제되었습니다. – Albert
제 질문은 세션 시간 제한이 실제로 데이터베이스 세션에서 어떻게 작동합니까? 해당 테이블에서 레코드를 삭제하는 이벤트를 정확히 트리거하는 것은 무엇입니까? 웹 사이트에 대한 액세스 권한이 필요합니까? 아니면 세션이 만료 될 때 발생합니까? – Albert