PHP でセッションを管理する Web アプリを制作しているが、セッション情報はサーバーの再起動などで揮発してしまう。そこで、セッション情報を DB で管理する方法として PHPRedis を試してみる。
設定
ディレクトリー構成
1 | - / |
docker-compose.yml
とりあえず、クライアント側の PHP とセッションサーバーの Redis のコンテナを用意する。
1 | version: "3.0" |
.env
Redis 関連の設定値を環境変数で持たせる。Redis サーバーのホスト名もここで持たせるべきかも。
1 | REDIS_PORT=6379 |
php/Dockerfile
(今回のはまりどころ→)PHPRedis のソースがALpine Linux のイメージに含まれていないので、docker-php-ext-install する前に git clone する必要がある。
1 | FROM php:7.2-cli-alpine |
php/php.ini
セッションの管理方法として Redis を指定する。
1 | [Date] |
src/session.php
動作確認用にセッション情報を保存するスクリプト。
1 |
|
確認
まず、現在のセッション管理状態は管理しているセッションがないので、redisの中は空であることが確認する。
1 | # apk add redis |
次に、実際にセッションの管理を行ってみる。
1 | # php /root/src/session.php |
セッション情報が Redis に格納されたことを確認する。
1 | # redis-cli -h redis -a ${REDIS_PASSWORD} |
保存されてるようだ。