FuelPHPでSessionにredisを使う方法

こんにちは、さるまりんです。

FuelPHPで作った仕組みを設定する機会があって迷ってしまったのでメモです。

FuelPHPはデフォルトではcookie(クッキー)でセッション管理をします。

これを後述の設定ファイルでデータベースやファイルで管理するように設定できます。

今回はredisで管理する方法です。

1. セッションの設定ファイル

fuel/core/config/session.phpをコピーして、fuel/app/config/session.phpを作ります。

この中でSessionを設定します。

変更するのはdriverの項目です。

ここを

/**
 * -------------------------------------------------------------------------
 *  Driver
 * -------------------------------------------------------------------------
 *
 *  If no session type is requested, use 'cookie' as the default value.
 *
 */

'driver' => 'cookie',
‘redis’に
'driver' => 'redis',

変更します。

このファイルの中のredisの項目はこんな感じです。

// specific configuration settings for redis based sessions
/**
 * -------------------------------------------------------------------------
 *  Configurations - Redis Based
 * -------------------------------------------------------------------------
 *
 *  Special configuration settings for Redis based sessions.
 *
 */

'redis' => array(
'cookie_name' => 'fuelrid',

/**
* ---------------------------------------------------------------------
*  Database Name
* ---------------------------------------------------------------------
*
*  Name of the Redis database to use (as configured in config/db.php).
*
*/

'database' => 'default',
),

cookie_nameはセッションを格納するために使われるcookieの名前です。

databaseはどのredisを使うかの設定です。これはコメントにあるようにconfig/db.phpで設定します。

2. データベースの設定ファイル

次はデータベースの設定ファイルを作成します。

すでにRDBなど他のデータベースを利用している場合はファイルが存在するはずです。

fuel/app/config/[環境]/db.phpファイルがそれにあたります。

なければ、fuel/core/config/db.phpをコピーして、fuel/app/config/[環境]/db.phpを作ります。

※[環境]にはdevelopmentproductionが入ります。

この中にredisの設定を追加します。

return array(

    ...

    // redisの設定です。
    'redis' => array(
        'default' => array(
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'timeout' => null,
        ),
    ),
);
上の例ではローカルホストにデフォルトポートでredisサーバーがある前提で追加しています。
これでセッションはredisに格納されるようになります。

fuel/core/config/にあるファイルのコメントにちゃんと説明が書いてくれているのでそれに従えばいいんですね。

勉強になりました。

他にもデータベースやredisのかわりにmemcachedを使ったりもできるよう。

それも機会があれば試してみたいです。

読んでくださってありがとうございます。

それではまた!