PHPのSESSION管理はRedisではなくRedis Clusterを使いたいという方にだけこっそり教えます
2935 ワード
はい。。大げさなタイトルですみません。
PHPのSESSION管理でRedis Clusterを指定したい場合の方法です。
環境はこちら。
redis 3.0.5、phpredis、apache 2.2.15
Redis Cluster を指定する
phpで直接指定するにはこんな感じ。
php
ini_set('session.save_handler', 'rediscluster');
ini_set('session.save_path', 'seed[]=192.168.1.100:6379&seed[]=192.168.1.110:6379&seed[]=192.168.1.120:6379&timeout=3&read_timeout=3&failover=error');
apacheのextensionに書くにはこんな感じ。
redis.ini
extension = redis.so
session.save_handler = rediscluster
session.save_path = 'seed[]=192.168.1.100:6379&seed[]=192.168.1.110:6379&seed[]=192.168.1.120:6379&timeout=3&read_timeout=3&failover=error'
(おまけ) Redis を指定する
php
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379');
redis.ini
extension = redis.so
session.save_handler = redis
session.save_path = "tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379"
php
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379');
redis.ini
extension = redis.so
session.save_handler = redis
session.save_path = "tcp://host1:6379, tcp://host2:6379?timeout=2.5, tcp://host3:6379"
ちなみにですが、Redis ClusterにRedisとしてPHP Sessionを指定すると下記のようにエラーが出ます。
[06-Apr-2016 16:48:04 Asia/Tokyo] PHP Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (tcp://127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003
参考URL
https://github.com/phpredis/phpredis/issues/620
https://github.com/phpredis/phpredis/issues/664
Author And Source
この問題について(PHPのSESSION管理はRedisではなくRedis Clusterを使いたいという方にだけこっそり教えます), 我々は、より多くの情報をここで見つけました https://qiita.com/hayakawatomoaki/items/f667359d028232475d4e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .