配置php.ini把session存储到redis

PHP 7.2.10
CentOS

当我们的系统开启了session,当遇到大并发的时候,不可避免的会在服务器上存储有大量的session文件,默认的session方式为文件,而大量小文件的查找效率是很低的,肯定会影响系统性能,所以必须设置session的管理方式,常用的为redis。

方法1:
在不修改任何配置的情况下。如果开启了session,可以通过 session_id() 函数来获取/设置当前会话 ID,于是我们利用这个ID来
将session和会话信息存储到redis,这是基于用户态的方式,其实这种方式并没有改变PHP去创建文件,查找并读取文件的事实,因为这个只是在原来基础上再建立一层管理机制而已,不建议这种方式。

方法2:修改php.ini
全局态

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
或者使用密码
session.save_path = "tcp://127.0.0.1:6379?auth=123456"

vi /etc/php.ini
	session.save_handler = redis
	session.save_path = "tcp://127.0.0.1:6379"
	
service php-fpm restart

打印phpinfo();发现不生效,还得修改 php-fpm的配置文件,准确的说,php-fpm的优先级比php.ini高。
vi /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] = redis
	php_value[session.save_path]    = "tcp://127.0.0.1:6379"

service php-fpm restart
打印phpinfo();已生效。

测试:
session_set.php
	<?php
	session_start();
	$_SESSION['username'] = 'rao';

session_get.php
	<?php
	session_start();
	echo $_SESSION['username'];
	
进入 /var/lib/php/session 目录,清除之前的session文件
	cd /var/lib/php/session
	rm -rf *
访问
	http://192.168.10.200/session_set.php
	http://192.168.10.200/session_get.php
		打印出 rao
查看redis
	db0 生成了一条session
cd /var/lib/php/session
ls
空的,证明已经不再生成session文件了。

方法3:ini_set

用户态

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");

方法4:session_set_save_handler()

设置用户自定义会话存储函数
用户态

session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid [, callable $validate_sid [, callable $update_timestamp ]]] ) : bool

允许你为session操作的每一步自定义回调函数
在这里插入图片描述
不需要修改配置文件。

关于 session_set_save_handler()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值