phpのセッション管理にnosqlのredisを使ってみました。
redisのサイトでclientとして推奨されているのは、Predisとphpredis。前者はphpで書かれた高レベルAPI、後者はCで書かれた低レベルAPI。Predisにもセッションハンドラが含まれているのですぐ利用できますが、.soを導入できる環境であればphpredisを使ったほうがより簡単です。
※Predisのセッションハンドラはlib/Predis/Session/SessionHandler.phpにあります。
phpredisを入手。
1 |
$ git clone https://github.com/nicolasff/phpredis.git |
インストール。
1 2 3 |
$ phpize $ ./configure --with-php-config=/usr/bin/php-config $ make && make install |
それぞれの環境にあわせてredis.soというファイルができます。Ubuntuなら/usr/lib/php5/20090626/あたりです。
phpの設定ファイルに以下を追記。Ubuntuなら/etc/php5/apache2/conf.d/redis.iniを作ってそこに書けばOKです。
1 |
extension=redis.so |
Apacheを再起動してphpinfo()を見るとredisのセクションが追加され、sessionのセクションのRegistered save handlersにredisが追加されてていることが確認できます。
session_save_handlerはデフォルトでfilesでテンポラリファイルが使用されます。.htaccessに以下を追記してredisを使用するように変更します。”6379″はredisの待ち受けポートです。それぞれの環境にあわせて指定してください。
1 2 |
php_value session.save_handler redis php_value session.save_path "tcp://localhost:6379" |
適当にセッションを使うコードを書いてセッション管理が有効なことを確認してみてください。本当にredisが使われているか不安な方はredisを落としてセッション管理ができないことも確認してみてください。