ホームページ >バックエンド開発 >PHPチュートリアル >セッションストレージ Redis の代替方法
php はデフォルトでファイルを使用してセッションを保存します。同時実行の量が多い場合、効率は非常に低くなります。 Redis は高い同時実行性を非常に適切にサポートしているため、Redis を使用してファイル ストレージ セッションを置き換えることができます。
ここではPHPのsession_set_save_handler
関数の機能と使い方を紹介します。この関数は、ユーザーレベルのセッション保存関数 (オープン、クローズ、書き込みなど) を定義します。プロトタイプは次のとおりです。
<code>bool session_set_save_hanler(callback open,callback close,callback read,callback write,callback destory,callback gc) </code>
この関数を使用する前に、php.ini 設定ファイルの session.save_handler オプションを user に設定します。そうしないと、session_set_save_handle が有効になりません。
以下は、redis を使用してセッションを保存する例です。
セッション管理クラス sessionManager を作成します。コードは次のとおりです:
<code><?php class SessionManager { private $reids; private $sessionSavePath; private $sessionName; private $sessi public function __construct() { $this->reids=new Redis(); $this->reids->connect('127.0.0.1',6379); $retval=session_set_save_handler( array($this,"open"), array($this,"close"), array($this,"read"), array($this,"write"), array($this,"destroy"), array($this,"gc") ); } public function open($path,$name) { return true; } public function close() { return true; } public function read($id) { $vale=$this->reids->get($id); if($vale) { return $vale; }else { return ''; } } public function write($id,$data) { if($this->reids->set($id,$data)) { $this->reids->expire($id,$this->sessionExpireTime); return true; } return false; } public function destroy($id) { if($this->reids->delete($id)) { return true; } return false; } public function gc($maxlifetime) { return true; } public function __destruct() { session_write_close(); } } ?> </code>
SessionManager コンストラクターは主に Redis サーバーに接続するために使用され、session_set_save_handler 関数を使用してセッション コールバック関数を設定し、session_start 関数を呼び出してセッション コールバック関数を有効にします。セッション機能。この例の open、close、および gc コールバック関数はあまり役に立たないため、直接 true を返します。
書き込みコールバック関数では、セッション ID をキーとして使用し、セッション データを値として Redis サーバーに保存し、セッションの有効期限を 300 秒に設定します。読み取りコールバック関数では、セッション ID がキーとして使用され、redis サーバーからデータを読み取り、このデータを返します。 destroy コールバック関数では、セッション ID をキーとして使用して、対応するセッション データを Redis サーバーから削除します。
使用するには、SessionManager クラスをインクルードし、SessionManager オブジェクトをインスタンス化するだけです。以下の session_set.php ファイルを作成します。コード
<code><?php include("SessionManager.php"); new SessionManager(); //开启session管理 $_SESSION['username']='hezikuang';//创建session变量 ?> </code>
を入力し、次のコードを入力して session_get.php ファイルを作成します。
<code><?php include("SessionManager.php"); new SessionManager(); //开启session管理 echo $_SESSION['username']; ?> </code>
session_get.php にアクセスして、成功したかどうかを確認できます。
著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
上記では、セッション ストレージの代替方法である redis を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。