세션 처리 Examples 사용자 정의 세션 처리기

데이터베이스 저장소 또는 다른 저장소 방법을 구현하려면 session_set_save_handler()를 사용하여 사용자 수준 저장소 함수 집합을 만들어야 합니다. 세션 핸들러는 SessionHandlerInterface를 사용하여 생성하거나 SessionHandler에서 상속하여 PHP의 내부 핸들러를 확장할 수 있습니다.

session_set_save_handler()에 지정된 콜백은 세션의 수명 주기 동안 PHP에 의해 호출되는 메서드입니다. open, read, writeclose 및 하우스키핑 작업: 세션 삭제를 위한 destroy 및 주기적인 가비지 수집을 위한 gc.

따라서 PHP에는 항상 세션 저장 핸들러가 필요합니다. 기본값은 일반적으로 내부 '파일' 저장 핸들러입니다. session_set_save_handler()를 사용하여 사용자 정의 저장 핸들러를 설정할 수 있습니다. 대체 내부 저장 핸들러는 sqlite, memcachememcached와 같은 PHP 확장에서도 제공되며 session.save_handler로 설정할 수 있습니다.

세션이 시작되면 PHP는 내부적으로 open 핸들러를 호출한 후 read 콜백을 호출하여 원래 저장을 위해 전달된 그대로 인코딩된 문자열을 반환해야 합니다. read 콜백이 인코딩된 문자열을 반환하면 PHP는 이를 디코딩한 다음 결과 배열을 $_SESSION 슈퍼글로벌에 채웁니다.

PHP가 종료되면(또는 session_write_close()가 호출될 때) PHP는 $_SESSION 슈퍼글로벌을 내부적으로 인코딩하고 이것을 세션 ID와 함께 write 콜백에 전달합니다. write 콜백이 완료된 후 PHP는 내부적으로 close 콜백 핸들러를 호출합니다.

세션이 특별히 파괴되면 PHP는 세션 ID로 destroy 핸들러를 호출합니다.

PHP는 세션의 설정된 최대 수명에 따라 세션 레코드를 만료하기 위해 때때로 gc 콜백을 호출합니다. 이 루틴은 $lifetime보다 오래 마지막으로 액세스한 영구 저장소의 모든 레코드를 삭제해야 합니다.