ホームページ  >  記事  >  バックエンド開発  >  セッションストレージ Redis の代替方法

セッションストレージ Redis の代替方法

WBOY
WBOYオリジナル
2016-07-30 13:31:561042ブラウズ

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 チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。