>  기사  >  백엔드 개발  >  php_php 팁에서 사용자 정의 세션 프로세서를 구현하는 방법

php_php 팁에서 사용자 정의 세션 프로세서를 구현하는 방법

WBOY
WBOY원래의
2016-05-16 20:24:321021검색

이 기사의 예에서는 PHP에서 사용자 정의 세션 프로세서를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

세션 사용자 정의 세션 프로세서, 즉 세션의 모든 다양한 작업은 세션 사용자 정의를 통해 결정될 수 있습니다. 그것은 무엇을 의미합니까? 먼저 php.ini의 session.save_handler 구성을 살펴보겠습니다.

기본적으로 session.save_handler = 파일이며, 이는 시스템 정의 프로세서가 호출된다는 의미입니다(소위 프로세서라는 것은 실제로 많은 함수/메서드입니다). session.save_handler를 사용자나 memcache 또는 네트워크 파일 시스템(클라우드 컴퓨팅)으로 설정할 수 있습니다.

session.save_handler = user: 사용자 정의 세션 핸들러 호출을 나타냅니다. session.save_handler = memcache:... 약간...(대략 메모리에 저장됨, 더 효율적임)을 나타냅니다.

session.save_handler = files로 설정하면 세션 동작과 관련하여 session.set_save_handler의 6가지 콜백 함수(자세한 내용은 PHP 설명서 참조)가 실제로 호출됩니다(소위 콜백 함수는 시스템에서 호출되어 수행됩니다). 지정할 필요가 없습니다.) PHP 매뉴얼에서도 사용할 수 있는 6가지 콜백 함수에 대한 아래 코드를 참조하세요.

코드 복사 코드는 다음과 같습니다.

함수 열기($save_path, $session_name)
{
전역 $sess_save_path;
$sess_save_path = $save_path;
반환(true);
}

함수 닫기()
{
반환(true);
}

함수 읽기($id)
{
전역 $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
반환(문자열) @file_get_contents($sess_file);
}

함수 쓰기($id, $sess_data)
{
전역 $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
$return = fwrite($fp, $sess_data);
fclose($fp);
반환 $return;
} 그 밖의 {
반품(거짓);
}
}

함수 destroy($id)
{
글로벌 $sess_save_path;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}

함수 gc($maxlifetime)
{
전역 $sess_save_path;
foreach (glob("$sess_save_path/sess_*") as $filename) {
If (filemtime($filename) $maxlifetime < time()) {
@unlink($filename);
}
}
true를 반환합니다.
}

session_set_save_handler("열기", "닫기", "읽기", "쓰기", "파괴", "gc");
session_start();
// 세션을 정상적으로 사용합니다
?>


session.save_handler를 user로 설정하면 위의 코드를 필요한 메소드로 다시 작성하고 실행된 php 파일에서 호출할 수 있습니다. 예를 들어, 기본적으로 세션을 저장하는 파일 이름은 sess_로 시작하는데, 이는 실제로 여기에서 설정한 것으로 원하는 대로 변경할 수 있습니다.

물론 세션이 저장되는 방식을 수정할 수도 있습니다. 기본값은 파일로 저장하는 것입니다. (물론 이렇게 하는 것은 권장하지 않습니다. 데이터베이스 읽기 속도 때문입니다.) 더 느리다) 또는 메모리에 저장되도록 설정할 수 있습니다. (가장 빠른 속도, 자세한 내용은 memcache 관련 내용에 설명되어 있습니다.)

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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