配置php的session存储到memcache或redis

  PHP默认配置是将session以文件形式存储在服务器上,网站访问量增加之后,单机的io是瓶颈,而且文本读取慢,除了默认的文本还可以存放到数据库,放到内存(memcache,redis)。不建议放到数据库里面,还是配置到内存里面比较爽,既提高了访问速度,又很好的实现了会话共享。

memcache 存储

如何配置

服务端配置很简单只要两条配置命令

  1. 在 php.ini 中全局设置
    session.save_handler = memcache
    session.save_path = "tcp://127.0.0.1:11211"
  2. 单一网站配置(在php入口处添加,用框架的项目只需要在配置文件里面修改就可以了)
    ini_set("session.save_handler", "memcache");
    ini_set("session.save_path", "tcp://192.168.48.128:11211");
如何与网站应用互通

memcached 服务是没有密码的,如果没有限制的暴露在外网,任何用户都是可以连接的。
-l 是监听的服务器IP地址,默认是127.0.0.1,任何ip访问0.0.0.0

如何限制访问
  1. 利用 -l 参数,缺点是需要重新指定ip的时候需要重启,缓存会丢失。
  2. 利用防火墙限制访问,推荐用这种方式,只需要配置规则就可以了,不影响memcahced运行。
    memcache做ip限制
php端扩展下载
  1. Linux扩展去这里下载 http://pecl.php.net/package/memcache
  2. Windows http://pecl.php.net/package/memcache/3.0.8/windows 官方只支持到php5.6.
    php7 看这里 https://github.com/nono303/PHP7-memcache-dll

demo代码:

<?php 
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.48.128:11211");

session_start();  
if ( ! isset( $_SESSION['TEST'] ) )
{
    $_SESSION['TEST'] = time();
}

$_SESSION['yusure'] = time();
$_SESSION['TEST3'] = time();

var_dump( $_SESSION );
var_dump( session_id() );
?>


对了,介绍下这个可视化工具 MemAdmin

redis 存储

如何配置

服务端配置很简单只要两条配置命令

  1. 在 php.ini 中全局设置
    session.save_handler = redis
    session.save_path = "tcp://127.0.0.1:6379"
  2. 单一网站配置(在php入口处添加,用框架的项目只需要在配置文件里面修改就可以了)
    ini_set("session.save_handler", "redis");
    ini_set("session.save_path", "tcp://192.168.48.128:6379");

    如果设置了连接密码 requirepass, 需要在后面拼接 ?auth=password

    ini_set("session.save_path", "tcp://192.168.48.128:6379?auth=xxxxxx");
如何与网站应用互通

这里就要说一下如何外连 redis 了,需要修改的参数如下:
注释掉bind

#bind 127.0.0.1

禁用保护模式

protected-mode no
php端扩展下载

http://pecl.php.net/package/redis

demo 代码:

<?php 
ini_set("session.save_handler", "redis");  
ini_set("session.save_path", "tcp://192.168.48.128:6379?auth=123456");

session_start();  
if ( ! isset( $_SESSION['TEST'] ) )
{
    $_SESSION['TEST'] = time();
}

$_SESSION['yusure'] = time();
$_SESSION['TEST3'] = time();

var_dump( $_SESSION );
var_dump( session_id() );
?>
Redis可视化工具:
  1. 客户端软件 Redis Desktop Manager
  2. 网页工具 phpRedisAdmin

好啦,将session存储到内存的两种方式就介绍这些了!

评论