>  기사  >  백엔드 개발  >  Redis가 PHP를 대체하여 파일 저장 세션을 구현하는 방법의 예

Redis가 PHP를 대체하여 파일 저장 세션을 구현하는 방법의 예

黄舟
黄舟원래의
2017-10-31 09:10:35990검색

redis PHP 파일 저장소 교체 예session

예제를 보기 전에 PHP session_set_save_handler 함수 사용법을 이해하시기 바랍니다

SessionManager 클래스 정의

class SessionManager {
  private $redis;
  public function construct(){
    $this->redis = new Redis();
    $this->redis->connect('192.168.0.102', 6379);
    $retval =session_set_save_handler(
      array($this,"open"),
      array($this,"close"),
      array($this,"read"),
      array($this,"write"),
      array($this,"destroy"),
      array($this,"gc")
    );
    session_start();
  }
  public function open($path,$name){
    return true;
  }
  public function close(){
    return true;
  }
  public function read($id){
    $session_value = $this->redis->get($id);
    if($session_value){
      return $session_value;
    }else{
      return "";
    }
  }
  public function write($id,$data){
    if($this->redis->set($id,$data)){
      return true;
    }else{
      return false;
    }
  }
  public function destroy($id){
    if($this->redis->delete($id)){
      return true;
    }else{
      return false;
    }
  }
  public function gc($maxlifetime){
    return true;
  }
  public function destruct(){
    session_write_close();
  }
}

세션 만들기_ set.php 코드는 다음과 같습니다

include("SessionManager.php");
new SessionManager();
$_SESSION['user_name']="xxdcsnd@sina.com";

다음과 같이 session_set.php 코드를 생성합니다

include("SessionManager.php");
new SessionManager();
echo $_SESSION['user_name'];

테스트 출력 결과 xxdcsnd@sina.com

Note: php.ini session.save-hadler는 사용자로 설정됩니다. 그렇지 않으면 session_set_save_handler는 그렇지 않습니다. 효력을 발휘

위 내용은 Redis가 PHP를 대체하여 파일 저장 세션을 구현하는 방법의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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