PHP セッションは、管理のために memcache に情報を最適に書き込みます
また、memcache を使用してデータと情報キャッシュを保存する方法と利点についても説明しました。これにより、データベース アクセスの数が減り、データベースへの負荷が軽減されます。
memcache にセッションを保存して管理するには、memcache、セッションの使用法、および session_set_save_handler() を理解する必要があります。
もちろん、最初に public クラスを作成します。静的メンバーメソッド
memcache コマンドは Telnet を使用して
を操作します。同様に、必要なファイルを作成します。ルート ディレクトリ内の
Memsession.class.php はパブリック memcache ストレージ クラス ファイル、one.php、two.php、three.php はテスト ファイルです。 items.php は出力データ配列です
session.class.php:
まず、memcache への接続に使用される変数を定義し、それらを初期化します
<?php class MemSession{ private static $handler=null; private static $lifetime=null; private static $time=null; const NS='session_'; //定义下标 ...  ...}    $memcache=new Memcache;    //连接memcache    $memcache->connect("localhost",11211) or die("could not connect"); MemSession::start($memcache);
NS は定数であることに注意し、添え字
再初期化メソッド
//初始化方法 private static function init($handler){ self::$handler=$handler; self::$lifetime=ini_get('session.gc_maxlifetime'); self::$time=time(); }
セッションを開き、このクラスの open、close およびその他のメソッドへの呼び出しを定義します
//开启session public static function start(Memcache $memcache){ //首先将属性初始化 self::init($memcache); //调用handler,以后调用handler时都是用memcache session_set_save_handler( array(__CLASS__,'open'),//调用本类的open方法 array(__CLASS__,'close'), array(__CLASS__,'read'), array(__CLASS__,'write'), array(__CLASS__,'destroy'), array(__CLASS__,'gc') ); //调用session_start() session_start(); }
open() と close() は true を返すだけで済みますが、open() のパラメータはパスと名前です
public static function open($path, $name){ return true; } public static function close(){ return true; }
のみが必要ですが、入力される出力パラメータに値がある場合、出力データを返します
public static function read($PHPSESSID){ $out=self::$handler->get(self::session_key($PHPSESSID)); //得到该下标输出的数据 if($out===false || $out ==null){ return ''; //out得到数据没有,返回空 } return $out; //返回得到的数据 }
独自の ID、データ、および有効期間を返します
public static function write($PHPSESSID, $data){ //判断是否有数据 $method=$data ? 'set' : 'relpace'; return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime); }
destroy() は独自の削除メソッドを呼び出します
public static function destroy($PHPSESSID){ return self::$handler->delete(self::session_key($PHPSESSID)); //调用delete方法 } public static function gc($lifetime){ return true; }
private static function session_key($PHPSESSID){ $session_key=self::NS.$PHPSESSID; //键值为自身和传进来的phpsessid return $session_key; }
成功した場合、telnetで表示されます
は、セッション データが memcache に正常に保存されたことを示します