현재 위치: > 함수 카테고리 모음> session_set_save_handler

session_set_save_handler

사용자 수준 세션 스토리지 기능을 설정하십시오
이름:session_set_save_handler
분류:세션 세션
사용 언어:php
한 줄 설명:사용자 정의 세션 스토리지 기능을 설정합니다

(PHP 4, PHP 5, PHP 7, PHP 8)

Session_SET_SAVE_HANDLER-사용자 정의 세션 저장 기능을 설정합니다

설명

 session_set_save_handler( callable $open, callable $close, callable $read, callable $write, callable $destroy, callable $gc, callable $create_sid = ?, callable $validate_sid = ?, callable $update_timestamp = ? ): bool

다음 방법을 사용하여 사용자 정의 세션 저장 기능을 등록 할 수 있습니다.

 session_set_save_handler(object $sessionhandler, bool $register_shutdown = true): bool

Session_SET_SAVE_HANDLER ()는 사용자 정의 세션 스토리지 기능을 설정합니다. PHP의 내장 세션 저장 메커니즘 이외의 메소드를 사용하려면이 기능을 사용할 수 있습니다. 예를 들어 세션 스토리지 기능을 사용자 정의하여 세션 데이터를 데이터베이스에 저장할 수 있습니다.

매개 변수이 기능에는 두 가지 프로토 타입이 있습니다.

세션 핸들러
SessionHandlerInterface, SessionIdInterface (선택 사항) 및/또는 SessionUpDateTimestAmpHandlerInterface 인터페이스 (예 : SessionHandler)를 구현하는 객체.

register_shutdown
함수 session_write_close ()를 register_shutdown_function () 함수로 등록하십시오.

또는
Open (String $ SavePath, String $ SessionName)
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 open(string $savePath, string $sessionName): bool

열린 콜백 함수는 클래스 생성자와 유사하며 세션이 열리면 호출됩니다. 이것은 세션을 자동으로 또는 수동으로 시작하는 첫 번째 콜백 함수입니다. session_start ()를 호출하여 세션을 수동으로 시작합니다. 이 콜백 함수 작동은 성공적으로 진정으로 반환됩니다. 그렇지 않으면 거짓.

닫다
닫기 콜백 함수는 클래스의 소멸자와 유사합니다. 쓰기 콜백 함수가 호출 된 후 호출됩니다. Close Callback 함수는 Session_write_close () 함수가 호출 된 후에도 호출됩니다. 이 콜백 함수 작동은 성공적으로 진정으로 반환됩니다. 그렇지 않으면 거짓.

읽다
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 read(string $sessionId): string

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

Session_Start () 함수를 호출하여 세션을 자동으로 시작하거나 수동으로 세션을 시작한 후 PHP는 내부적으로 읽기 콜백 함수를 호출하여 세션 데이터를 얻습니다. PHP는 읽기 전에 열린 콜백 함수를 호출합니다.

읽기 콜백에 의해 반환 된 직렬화 된 문자열 형식은 쓰기 콜백이 데이터를 저장할 때 형식과 정확히 동일해야합니다. PHP는 반환 된 문자열을 자동으로 사로화하고 $ _session Super Global Variable로 채 웁니다. 데이터는 Serialize () 함수와 매우 유사 해 보이지만 다르 므로이 정보가 다릅니다. 다음을 참조하십시오 : session.serialize_handler.

쓰다
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 write(string $sessionId, string $data): bool

세션이 데이터를 저장하면 쓰기 콜백 함수가 호출됩니다. 이 콜백 함수는 $ _session에서 데이터 직렬화 후 현재 세션 ID 및 문자열을 매개 변수로 사용합니다. 세션 데이터를 직렬화하는 프로세스는 Session.Serialize_handler 설정 값을 기반으로 PHP에 의해 완료됩니다.

직렬화 된 데이터는 스토리지의 세션 ID와 연결됩니다. 데이터를 얻기 위해 읽기 콜백 함수가 호출되면 반환 된 데이터는 쓰기 콜백 함수로 전달 된 데이터와 완전히 일치해야합니다.

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

알아채다:

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

파괴하다
다음의 시그니처 호출 가능한 콜백이 구현됩니다.

 destroy(string $sessionId): bool
이 콜백 함수는 session_destroy () 함수가 호출되거나 session_regenerate_id () 함수가 호출되고 파괴 매개 변수가 true로 설정 될 때 호출됩니다. 이 콜백 함수 작동은 성공적으로 진정으로 반환됩니다. 그렇지 않으면 거짓.

GC
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 gc(int $lifetime): bool
세션에서 오래된 데이터를 정리하기 위해 PHP는 때때로 쓰레기 수집 콜백 기능을 호출합니다. 통화주기는 세션에 의해 제어됩니다 .gc_probability 및 session.gc_divisor 매개 변수. 이 콜백 함수로 전달 된 수명 매개 변수는 session.gc_maxlifetime에 의해 설정됩니다. 이 콜백 함수 작동은 성공적으로 진정으로 반환됩니다. 그렇지 않으면 거짓.

create_sid
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 create_sid(): string

새 세션 ID가 필요한 경우이 콜백 함수를 실행하십시오. 호출 될 때 매개 변수로 전달되지 않으며 리턴 값은 문자열 형식의 유효한 세션 ID 여야합니다.

validate_sid
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 validate_sid(string $key): bool
세션을 열면 use_strict_mode가 세션 ID가 제공되면 세션이 시작되면이 콜백이 실행됩니다. 매개 변수 키는 확인할 세션 ID입니다. 이 ID의 세션이 이미 존재하면 유효한 세션 ID입니다. 반환 값은 성공시 사실이어야하고 실패시 허위입니다.

update_timestamp
다음의 시그니처 호출 가능한 콜백이 구현됩니다.
 update_timestamp(string $key, string $val): bool

세션을 업데이트 할 때이 콜백을 실행하십시오. 매개 변수 키는 세션 ID입니다. 매개 변수 val은 세션 데이터입니다. 반환 값은 성공시 사실이어야하고 실패시 허위입니다.

반환 값?
성공 또는 실패시 잘못을 반환합니다.

예?
예제 #1 사용자 정의 세션 핸들러 : 전체 코드는 SessionHandlerInterface를 참조하십시오.

호출 방법 만 여기에 나열됩니다. 전체 코드는 SessionHandlerInterface를 참조하십시오.

여기서 Session_SET_SAVE_HANDLER () 함수의 OOP 프로토 타입이 사용되며 두 번째 매개 변수는 종료 함수를 등록하는 데 사용됩니다. 객체를 세션 저장 핸들러로 등록 할 때 권장됩니다.
 <?php class MySessionHandler implements SessionHandlerInterface { // 在这里实现接口} $handler = new MySessionHandler(); session_set_save_handler($handler, true); session_start(); // 现在可以使用$_SESSION 保存以及获取数据了

댓글 경고 : 쓰기 및 닫기 콜백 함수는 객체가 파괴 된 후에 호출되지 않습니다. 따라서이 두 콜백 함수에서는 객체를 사용할 수 없으며 예외를 던질 수 없습니다. 예외가 함수에 던져지면 PHP는 그것을 잡거나 추적하지 않으므로 프로그램이 비정상적으로 종료됩니다. 그러나 객체 파괴자는 세션을 사용할 수 있습니다.

이 문제를 해결하기 위해 Destructor에서 Session_Write_Close () 함수를 호출 할 수 있습니다. 그러나 셧다운 콜백 함수를 등록하는 것이보다 신뢰할 수있는 방법입니다.

경고 스크립트가 완료된 후 세션이 닫히면 일부 SAPI에 대해 현재 작업 디렉토리가 변경되었을 수 있습니다. 스크립트 실행이 끝나기 전에 세션을 닫으려면 Session_Write_Close () 함수를 호출 할 수 있습니다.

유사한 함수
인기 기사