首頁 > php教程 > PHP开发 > ThinkPHP自訂Redis處理SESSION的實作方法

ThinkPHP自訂Redis處理SESSION的實作方法

高洛峰
發布: 2016-12-22 10:21:12
原創
1713 人瀏覽過

本文實例講述了ThinkPHP自訂Redis處理SESSION的實作方法。分享給大家供大家參考,具體如下:

日常中我們都會使用到session來保存用戶登入的信息,常用的session的保存方式有:文件保存(預設)、資料庫保存、Redis保存、memcached等。這裡主要記錄一下在用ThinkPHP處理session用Redis來保存session的用法。

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檔案中找到定義session的方法,大約在1179行左右讀取session驅動的判斷。如果我們定義了配置項目SESSION_TYPE,則會new一個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;
  }
}
登入後複製

   

至此就完成了Redissession的處理。

memcached的方法和Redis差不多一樣!

希望本文所述對大家以ThinkPHP框架為基礎的PHP程式設計有所幫助。

更多ThinkPHP自訂Redis處理SESSION的實作方法相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板