ホームページ >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 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。