2012-09-13 2 views
2

Zend_Session_Handler_DbTable을 사용하여 세션 데이터를 db에 저장하려고 시도하고 있지만 볼 수있는 한 만료 된 세션은 데이터베이스에서 삭제되지 않습니다.Zend_Session_Handler_DbTable을 사용할 때 가비지 수집

파일 기반 세션을 삭제하는 cron 작업 (우분투)이 보이지만 db에 저장되는 세션에서 gc가 작동하는 방식을 찾을 수 없습니다.

답변

6

Zend_Session_SaveHandler_DbTable 클래스는 gc이라는 가비지 수집 방법을 가지고 있으며 Zend_Session::setSaveHandler()으로 전화하면 session_set_save_handler을 통해 PHP에 전달됩니다.

함수는 php.ini 값 session.gc_probabilitysession.gc_divisor에 따라 주기적으로 호출되어야합니다. 이러한 값이 가비지 콜렉션이 실행되는 결과로 설정되는지 확인하십시오.

또한 기본 gc 기능이 세션 테이블에서 행이 나이가 삭제되어야하는 결정하기 위해 그 열을 사용하기 때문에 DBTABLE이 핸들러를 저장 만들 때 modifiedColumnlifetimeColumn 옵션을 지정해야합니다.

+0

대단한 답변이었습니다! – Optimus

+0

@ drew010 고맙습니다. 따라서 resources.session.saveHandler.gc_probability = 1 resources.session.saveHandler.gc_divisor = 1000 또는 application.ini의 정렬 항목 중 일부를 설정하는 것으로 충분하지 않습니까? php.ini에서 편집해야합니까? 내 가비지 수집은 php.ini를 편집 한 후에 만 ​​작동하며 설정 한 application.ini 값을 수신하지 않습니다. – Darius