ホームページ > バックエンド開発 > PHPチュートリアル > PHP セッションは管理のために memcache に情報を最適に書き込みます

PHP セッションは管理のために memcache に情報を最適に書き込みます

WBOY
リリース: 2016-06-13 12:16:31
オリジナル
872 人が閲覧しました

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=&#39;session_&#39;;  //定义下标     ...    	&#160;...}&#160; &#160; $memcache=new Memcache;&#160; &#160; //连接memcache&#160; &#160; $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;    	}
ログイン後にコピー

read() には PHPSESSID パラメータ

のみが必要ですが、入力される出力パラメータに値がある場合、出力データを返します

    	public static function read($PHPSESSID){    		$out=self::$handler->get(self::session_key($PHPSESSID));  //得到该下标输出的数据    		if($out===false || $out ==null){    			return '';  //out得到数据没有,返回空    		}    		return $out;  //返回得到的数据    	}
ログイン後にコピー

write():

独自の 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() および gc():

destroy() は独自の削除メソッドを呼び出します

    	public static function destroy($PHPSESSID){    		return self::$handler->delete(self::session_key($PHPSESSID));  //调用delete方法    	}    	public static function gc($lifetime){    			return true;    	}
ログイン後にコピー

次に、受信 PHPSESSID メソッドを定義する必要があります

    	private static function session_key($PHPSESSID){    		$session_key=self::NS.$PHPSESSID; //键值为自身和传进来的phpsessid    		return $session_key;    	}
ログイン後にコピー



結果が表示されます

成功した場合、telnetで表示されます





は、セッション データが memcache に正常に保存されたことを示します















関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート