>  기사  >  백엔드 개발  >  참고 017 PHP의 session_set_save_handler() 함수

참고 017 PHP의 session_set_save_handler() 함수

黄舟
黄舟원래의
2016-12-26 10:11:141655검색

함수 설명

session_set_save_handler 함수는 사용자 정의 세션 저장을 설정하는 데 사용됩니다.

PHP에 내장된 세션 저장 메커니즘 이외의 방법을 사용하려는 경우 이 기능을 사용할 수 있습니다. 예를 들어 세션 저장 기능을 사용자 정의하여 데이터베이스에 세션 데이터를 저장할 수 있습니다.

사용법

bool session_set_save_handler( 호출 가능 $open , 호출 가능 $close , 호출 가능 $read , 호출 가능 $write , 호출 가능 $destroy , 호출 가능 $gc [, 호출 가능 $create_sid ] )

PHP 5.4 버전부터는 더 간단한 매개변수를 직접 사용하여 세션 저장소 설정을 사용자 정의할 수 있습니다.

bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )

매개변수 설명

이 매개변수에는 두 개의 프로토타입이 있습니다.

첫 번째 프로토타입(PHP 5.4+ 버전에서 사용 가능)은 다음과 같습니다.

sessionhandler

는 SessionHandlerInterface 인터페이스 객체를 구현합니다. 이 객체를 사용자 정의할 수 있습니다. 또는 공식적으로 제공되는 SessionHandler

register_shundown

을 사용하여 session_write_close() 함수를 Register_shutdown_function() 함수로 등록할 수 있습니다.

두 번째 프로토타입은 다음과 같습니다.

open(string $savePath, string $sessionName)

open 콜백 함수는 클래스의 생성자와 유사합니다. 세션이 열릴 때. session_start()를 호출하여 자동 또는 수동으로 세션을 시작한 후 호출되는 첫 번째 콜백 함수입니다. 이 콜백 함수는 작업이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

close()

close 콜백 함수는 클래스의 소멸자와 유사합니다. 쓰기 콜백 함수가 호출된 후에 호출됩니다. session_write_close() 함수가 호출되면 닫기 콜백 함수도 호출됩니다. 이 콜백 함수는 작업이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

read(string $sessionId)

세션에 데이터가 있는 경우 읽기 콜백 함수는 세션 데이터를 인코딩(직렬화)하는 문자열을 반환해야 합니다. 세션에 데이터가 없으면 읽기 콜백 함수는 빈 문자열을 반환합니다.

session_start() 함수를 호출하여 자동 또는 수동으로 세션을 시작한 후 PHP는 내부적으로 읽기 콜백 함수를 호출하여 세션 데이터를 가져옵니다. 읽기를 호출하기 전에 PHP는 공개 콜백 함수를 호출합니다.

읽기 콜백에서 반환되는 직렬화된 문자열 형식은 쓰기 콜백 함수가 데이터를 저장할 때의 형식과 정확히 동일해야 합니다. PHP는 반환된 문자열을 자동으로 역직렬화하고 $_SESSION 슈퍼 전역 변수를 채웁니다. 데이터가 serialize() 함수와 매우 유사해 보이지만 서로 다르다는 점을 기억하는 것이 중요합니다.

write(string $sessionId, string $data)

쓰기 콜백 함수는 세션이 데이터를 저장할 때 호출됩니다. 이 콜백 함수는 현재 세션 ID와 $_SESSION의 데이터 직렬화 후 문자열을 매개변수로 받습니다. 세션 데이터 직렬화 프로세스는 session.serialize_handler 설정 값에 따라 PHP에 의해 완료됩니다.

직렬화된 데이터는 세션 ID와 연결되어 저장됩니다. 데이터를 얻기 위해 읽기 콜백 함수를 호출할 때 반환된 데이터는 쓰기 콜백 함수에 전달된 데이터와 완전히 일치해야 합니다.

PHP는 스크립트가 실행되거나 session_write_close() 함수가 호출된 후 이 콜백 함수를 호출합니다. 이 콜백 함수를 호출한 후 PHP는 내부적으로 닫기 콜백 함수를 호출합니다.

참고:

PHP는 출력 스트림이 작성되고 닫힐 때까지 쓰기 콜백 함수를 호출하지 않으므로 쓰기 콜백 함수의 디버깅 정보가 브라우저에 출력되지 않습니다. 쓰기 콜백 함수에서 디버그 출력을 사용해야 하는 경우 디버그 출력을 파일에 쓰는 것이 좋습니다.

destroy($sessionId)

이 콜백 함수는 session_destroy() 함수가 호출되거나 session_regenerate_id() 함수가 호출되고 destroy 매개변수가 true로 설정된 경우 호출됩니다. 이 콜백 함수는 작업이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

gc($lifetime)

PHP는 세션 중 오래된 데이터를 정리하기 위해 수시로 가비지 수집 콜백 함수를 호출합니다. 호출 주기는 session.gc_probability 및 session.gc_divisor 매개변수에 의해 제어됩니다. 이 콜백 함수에 전달된 수명 매개변수는 session.gc_maxlifetime에 의해 설정됩니다. 이 콜백 함수는 작업이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

create_sid()

새 세션 ID가 필요할 때 호출되는 콜백 함수입니다. 콜백 함수는 전달된 매개변수 없이 호출되며, 반환 값은 문자열 형식의 유효한 세션 ID여야 합니다.

반환 값

성공 시 true를 반환하고 실패 시 false를 반환합니다.

위 내용은 Note 017 PHP의 session_set_save_handler() 함수 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.