php 使用 redis 作为 session 管理

php 使用 redis 作为 session 管理,本文采用 unix 的 sock 方式连接,主要讲解编译 phpredis、配置 php 和 redis 的关联


1、简介

如果你想做 php 多服务器的会话保持,那么 redis 是一种选择之一。当然 memcache 也不错不过为了稳定,慢一点无所谓了。

本教程讲解 phpredis 编译,挂载,与配置文件修改。


2、准备

提前准备的工具

1、phpredis 包 [ 链接 ]

2、PHP 的搭建方法,包含了一些本站的配置

安装的前提环境

1、php 成品环境

2、redis 安装完毕 (可通过 yum 安装)

3、使用 root 用户


3、操作

3.1、编译 phpredis

首先我们需要生成 php 的当前配置信息

phpize

然后我们使用编译命令编译。参数里就是配置文件的位置(请自行替换为你的配置文件)

./configure --with-php-config=/usr/local/php7.2/bin/php-config

错误结果如下

configure: error: Cannot find php-config. Please use –with-php-config=PATH

正确结果如下

creating libtool
appending configuration tag “CXX” to libtool
configure: creating ./config.status
config.status: creating config.h

配置完毕后,我们开始编译 (2~10s)

make

便宜完毕了当然是安装

make install

返回的结果如下

Installing shared extensions: /usr/local/php7.2/lib/php/extensions/no-debug-non-zts-20170718/

实际上是生成了一个文件 redis.so 放在这个目录下了。


3.2、修改 PHP 配置使用 redis 作为 session 管理

首先我们需要把这个文件添加进 php.ini 中

extension=redis.so

接着我们修改 redis 配置文件 /etc/redis.conf

#port 6379
port 0
#禁用端口访问

unixsocket /tmp/redis.sock
unixsocketperm 770
#限制访问权限

# maxmemory <bytes>
maxmemory 512mb
#限制最高内存

然后我们修改 php 的配置 /usr/local/php7.2/etc/php-fpm.d/www.conf

php_value[session.save_handler] = redis
php_value[session.save_path] = "unix:/var/run/redis.sock"

最后我们将 nginx 加入到 redis 用户组中

usermod -G redis nginx


4、讲解

默认编译 PHP 时,不会自带 redis 的相关组件。

而 redis 作为数据库,速度比文件加载就不知道快到哪去了。


5、后期修订


6、相关链接

1、phpredis 包 [ 链接 ]

点赞