第七星尘

php服务器把session放到redis中

默认情况下,执行php的服务器会把session保存在系统临时文件中。每次读取session,都会读取文件。当访问量大的时候,频繁地读取磁盘文件可能会增加IO压力,此时我们可以尝试把session放到redis中。此外,把session放到redis还利于以后多服务器扩展的session共享问题。
下面详细说下怎么做。
如果php是作为模块模式运行的(比如Apache默认运行的模式),则
把php.ini中的

session.save_handler = files

改为

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

重启apache以生效

service httpd restart

如果是以FastCGI运行的(比如nginx就是默认FastCGI运行的)
编辑 /etc/php-fpm.d/www.conf(可能视系统环境而路径不一样)
把这两行

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

改为(其实就是增加分号以注释掉)

;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session

然后增加两行:

php_value[session.save_handler] = redis
php_value[session.save_path] = tcp://127.0.0.1:6379

重启php服务以生效

service php-fpm restart
分享到: 更多
码字很辛苦,转载请注明来自第七星尘的技术博客《php服务器把session放到redis中》

评论

  1. 木偶 #1

    博主,如果是在项目中直接设置session 是不是更好一些
    ini_set(‘session.save_handler’, ‘redis’);
    ini_set(‘session.save_path’, ‘tcp://127.0.0.1:6379’);

    回复
    2017-08-22
    • 第七星尘

      都可以的。写在项目中也行。但为了省得每个项目都配置一下,干脆统一修改配置文件了。

      回复
      2017-08-23
  2. 木偶 #2

    回复
    2017-08-22
  3. 毛雨平 #3

    不错

    回复
    2017-03-28
  4. 高强 #4

    nice

    回复
    2016-09-1