2012-03-02 3 views
4

Symfony2 프로젝트가 있습니다. 각 세션이 시작될 때마다 사용자가 파일을 조작하고 배치 할 수있는 폴더를 만듭니다.on session end 이벤트

브라우저를 닫을 때 사용자 폴더를 삭제할 수 있기를 원합니다. (또는 다른 관련 이벤트 일 수도 있고 세션 시간 초과를 확인할 수도 있습니다.)

어떻게하면됩니까?

추신 : 나는 자바가 당신의 기능을 코드화 할 수있는 sessionHandler를 가지고 있다고 읽었습니다.

PHP (Symfony2 구체적)가 있습니까?

답변

4

우선 HTML과 PHP로 브라우저를 닫으면 재구성 할 수 없습니다. 브라우저가 여전히 있다는 것을 알기 위해서는 아약스와 폴링 또는 어떤 종류의 물건이 필요합니다. 가능하지만 브라우저가 여전히 (세션이 유효하지만) 몇 분 (랩톱, 허접스런 wlan 등)의 인터넷 연결이없는 경우 문제가 발생할 수 있기 때문에 주로 복잡합니다.

서버에서 스크립트를 검색 할 때 PHP가 실행되기 때문에 PHP에서이 작업을 수행하는 sessionHandler를 사용할 수 없습니다. 마지막 행이 실행 된 후 중지됩니다. 아무도 스크립트를 다시 검색하지 않으면 어떻게해야합니까? 세션이 아직 있는지 확인하기 위해 스크립트를 다시 시작하는 마법은 없습니다.

그럼, 어떻게해야합니까? 먼저 세션을 데이터베이스 세션 저장소 또는 이와 유사한 것을 사용하여 볼 수있게하려고합니다. 그런 다음 스크립트를 시작한 cronjob이 필요합니다. 모든 세션을 찾고 지금까지 어떤 세션이 유효하지 않은지 결정한 다음 폴더 삭제와 같은 작업을 수행합니다. Symfony는 데이터베이스에 세션을 저장하는 방식으로 세션 관리를 구성 할 수 있도록 해주 며 (here 참조) crontab (here 참조)을 통해 실행할 수있는 작업을 생성 할 수 있으므로 도움이됩니다.

어떤 세션이 유효하지 않거나이 세션과 관련이 있는지 결정하는 논리 부분이 귀하의 일부입니다. 그러나 데이터베이스에서 세션 시간과 값을 얻으면 매우 어렵지는 않습니다.