Maison >php教程 >PHP开发 >Méthode d'implémentation Redis personnalisée ThinkPHP pour gérer SESSION

Méthode d'implémentation Redis personnalisée ThinkPHP pour gérer SESSION

高洛峰
高洛峰original
2016-12-22 10:21:121733parcourir

L'exemple de cet article décrit la méthode d'implémentation du traitement Redis personnalisé ThinkPHP SESSION. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Dans la vie quotidienne, nous utiliserons la session pour enregistrer les informations de connexion de l'utilisateur. Les méthodes d'enregistrement de session couramment utilisées incluent : l'enregistrement de fichiers (par défaut), l'enregistrement de base de données, Sauvegarde Redis, Memcached, etc. Ici, nous enregistrons principalement l'utilisation de Redis pour enregistrer la session lors de l'utilisation de ThinkPHP pour traiter la session.

1. Définissez dans l'élément de configuration :

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

La méthode de définition de la session se trouve dans ThinkPHP/Common/functions .php, le jugement du pilote de session est lu autour de la ligne 1179. Si nous définissons l'élément de configuration SESSION_TYPE, un nouvel objet Redis sera créé et la fonction de stockage de session session_set_save_handler() sera appelée.

2. Créez un nouveau fichier Redis.class.php dans le répertoire ThinkPHPLibraryThinkSessionDriver

Le contenu du fichier est le suivant :

<?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;
  }
}

À ce stade, le traitement de la session Redis est terminé.

La méthode de memcached est presque la même que celle de Redis !

J'espère que cet article vous aidera à concevoir des programmes PHP basés sur le framework ThinkPHP.

Pour plus d'articles liés à la méthode d'implémentation SESSION de traitement Redis personnalisé de ThinkPHP, veuillez prêter attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn