>php教程 >PHP开发 >SESSION을 처리하기 위한 ThinkPHP 사용자 정의 Redis 구현 방법

SESSION을 처리하기 위한 ThinkPHP 사용자 정의 Redis 구현 방법

高洛峰
高洛峰원래의
2016-12-22 10:21:121727검색

이 기사의 예에서는 ThinkPHP 사용자 정의 Redis 처리 SESSION의 구현 방법을 설명합니다. 참고를 위해 모든 사람과 공유합니다. 세부 사항은 다음과 같습니다.

일상 생활에서 세션을 사용하여 사용자 로그인 정보를 저장합니다. 일반적으로 사용되는 세션 저장 방법에는 파일 저장(기본값), 데이터베이스 저장, Redis 저장, memcached 등 여기서는 ThinkPHP를 사용하여 세션을 처리할 때 Redis를 사용하여 세션을 저장하는 사용법을 주로 기록합니다.

1. 구성 항목에서 정의:

'SESSION_TYPE' => 'Redis', //session保存类型
'SESSION_PREFIX' => 'sess_', //session前缀
'REDIS_HOST' => '127.0.0.1' //REDIS服务器地址
'REDIS_PORT' => 6379, //REDIS连接端口号
'SESSION_EXPIRE' => 3600, //SESSION过期时间

세션 정의 방법은 ThinkPHP/Common/functions에서 확인할 수 있습니다. .php 파일에서 세션 드라이버의 판단은 라인 1179 주변에서 읽혀집니다. 구성 항목 SESSION_TYPE을 정의하면 새로운 Redis 객체가 생성되고 세션 저장 함수 session_set_save_handler()가 호출됩니다.

2. ThinkPHPLibraryThinkSessionDriver 디렉터리에 새 Redis.class.php 파일을 생성합니다.

파일 내용은 다음과 같습니다.

<?php
namespace Think\Session\Driver;
class Redis {
//  Redis连接对象
  private $redis;
//  Session过期时间
  private $expire;
  /**
   * 打开方法
   * @param type $path
   * @param type $name
   * @return type
   */
  public function open($path, $name) {
  $this->expire = C(&#39;SESSION_EXPIRE&#39;) ? C(&#39;SESSION_EXPIRE&#39;) : ini_get(&#39;session.gc_maxLifetime&#39;);
  $this->redis = new Redis();
  return $this->redis->connect(C(&#39;REDIS_HOST&#39;), C(&#39;REDIS_PORT&#39;));
  }
  /**
   * 关闭
   * @return type
   */
  public function close() {
  return $this->redis->close();
  }
  /**
   * 读取
   * @param string $id
   * @return type
   */
  public function read($id) {
  $id = C(&#39;SESSION_PREFIX&#39;) . $id;
  $data = $this->redis->get($id);
  return $data ? $data : &#39;&#39;;
  }
  /**
   * 写入
   * @param string $id
   * @param type $data
   * @return type
   */
  public function write($id, $data) {
  $id = C(&#39;SESSION_PREFIX&#39;) . $id;
  return $this->redis->set($id, $data, $this->expire);
  }
  /**
   * 销毁
   * @param string $id
   */
  public function destroy($id) {
  $id = C(&#39;SESSION_PREFIX&#39;) . $id;
  $this->redis->delete($id);
  }
  /**
   * 垃圾回收
   * @param type $maxLifeTime
   * @return boolean
   */
  public function gc($maxLifeTime) {
  return true;
  }
}

이제 Redis의 세션 처리가 완료되었습니다.

memcached 방식은 Redis와 거의 동일합니다!

이 기사가 ThinkPHP 프레임워크를 기반으로 PHP 프로그램을 설계하는 데 도움이 되기를 바랍니다.

ThinkPHP의 맞춤형 Redis 처리 SESSION 구현 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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