分类: Web
PHP7使用Redis保存session

PHP默认就支持保存session到redis,不需任何额外代码,首先安装redis,参考 redis快速安装
PHP默认使用文件存储session,如果并发量大,效率非常低,如项目同时运行在多台服务器上做了分布式部署,就无法使用常规的Session记录方式来记录用户的会话了,否则用户在服务器1上完成登录,我们下次在服务器2上访问其他模块就无法获取到该用户的信息。
php-redis.png

PHP安装redis扩展
以下操作需要在下载的 phpredis 目录中完成:

wget https://github.com/phpredis/phpredis/archive/4.2.0.tar.gz
cd phpredis-4.2.0                      # 进入 phpredis 目录
/usr/local/php/bin/phpize              # php安装后的路径
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

redis.so扩展存放在/usr/local/php/lib/php/extensions/no-debug-xxxxxxx/目录下。

修改php.ini文件

vi /usr/local/php/lib/php.ini

增加redis扩展:

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20170718"
extension = "redis.so"

修改session设置

vi /usr/local/php/lib/php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

如果Redis有密码,用下面的配置:

session.save_path = "tcp://127.0.0.1:6379?auth=password"

安装完成后重启php-fpm ,查看phpinfo信息,就能看到redis扩展。

systemctl restart php-fpm

phpinfo-redis.png
系统登录以后查看redis,session信息已经写入进去了,如下图
php-redis-sesion.png
测试PHP是否调通 redis 方法:

    $redis = new Redis();
    $redis->connect('192.168.x.x', 6379); //redis地址,端口
    $redis->auth('password');  //redis密码,无密码可注释掉
    $redis->select(1);   //选择数据库
    $redis->set("test","hello php redis.");
    echo $redis->get("test");

页面显示hello php redis.字样即redis和php配置正常。


相关博文:

发表新评论