配置php的session存储到memcache或redis
PHP默认配置是将session以文件形式存储在服务器上,网站访问量增加之后,单机的io是瓶颈,而且文本读取慢,除了默认的文本还可以存放到数据库,放到内存(memcache,redis)。不建议放到数据库里面,还是配置到内存里面比较爽,既提高了访问速度,又很好的实现了会话共享。
memcache 存储
如何配置
服务端配置很简单只要两条配置命令
- 在 php.ini 中全局设置
session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211"
- 单一网站配置(在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
如何限制访问
- 利用 -l 参数,缺点是需要重新指定ip的时候需要重启,缓存会丢失。
- 利用防火墙限制访问,推荐用这种方式,只需要配置规则就可以了,不影响memcahced运行。
memcache做ip限制
php端扩展下载
- Linux扩展去这里下载 http://pecl.php.net/package/memcache
- 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 存储
如何配置
服务端配置很简单只要两条配置命令
- 在 php.ini 中全局设置
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
- 单一网站配置(在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可视化工具:
- 客户端软件 Redis Desktop Manager
- 网页工具 phpRedisAdmin
好啦,将session存储到内存的两种方式就介绍这些了!
评论