Heim > php教程 > PHP开发 > Hauptteil

Benutzerdefinierte ThinkPHP-Redis-Implementierungsmethode zur Verarbeitung von SESSION

高洛峰
Freigeben: 2016-12-22 10:21:12
Original
1704 Leute haben es durchsucht

Das Beispiel in diesem Artikel beschreibt die Implementierungsmethode der benutzerdefinierten Redis-Verarbeitungssitzung von ThinkPHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Im täglichen Leben verwenden wir Sitzungen, um Benutzeranmeldeinformationen zu speichern. Zu den häufig verwendeten Methoden zum Speichern von Sitzungen gehören: Dateispeicherung (Standard), Datenbankspeicherung. Redis-Speicherung, Memcached usw. Hier erfassen wir hauptsächlich die Verwendung von Redis zum Speichern der Sitzung und die Verwendung von ThinkPHP zum Verarbeiten der Sitzung.

1. Definieren Sie im Konfigurationselement:

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

Die Methode zum Definieren einer Sitzung finden Sie in ThinkPHP/Common/functions .php-Datei wird die Beurteilung des Sitzungstreibers etwa in Zeile 1179 gelesen. Wenn wir das Konfigurationselement SESSION_TYPE definieren, wird ein neues Redis-Objekt erstellt und die Sitzungsspeicherfunktion session_set_save_handler() aufgerufen.

2. Erstellen Sie eine neue Redis.class.php-Datei im ThinkPHPLibraryThinkSessionDriver-Verzeichnis

Der Inhalt der Datei lautet wie folgt:

<?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;
  }
}
Nach dem Login kopieren

Zu diesem Zeitpunkt ist die Sitzungsverarbeitung von Redis abgeschlossen.

Die Methode von Memcached ist fast die gleiche wie die von Redis!

Ich hoffe, dieser Artikel hilft Ihnen beim Entwerfen von PHP-Programmen basierend auf dem ThinkPHP-Framework.

Weitere Artikel zur benutzerdefinierten Redis-Verarbeitungs-SESSION-Implementierungsmethode von ThinkPHP finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage