php实现多服务器session共享

php实现多服务器session共享
session工作原理
客户端访问时通过session_start生成一个session_id,session_id一般存在cookie中,关联内容并保存在服务器文件中,每次通过cookie获取session_id获取内容,多台服务器会有多个session_id,无法实现共享,解决方法如下:
多台服务器对同一客户端我们可以通过主服务器生成一个session_id完成session共享

设置session_id的cookie域名 
pip.ini配置文件设置:session.cooke_domain = 
代码设置 ini_set( 'session.cookie_domain' , '' );

通过session_id获取内容实现登入内容共享,把session存储在多服务器都能够访问的地方,默认存储在文件中,我们可以存储在redis缓存中
<?php

//启动session
session_start();

//设置session最大存活时间,单位【秒】
ini_set('session.gc_maxlifetime',60*60);

//设置session存储方法
ini_set('session.save_handler','redis');

//设置session存储路径,存储方式为redis时,路径就是redis的连接(如果不需要授权,直接使用 tpc://127.0.0.1:6379 即可)
ini_set('session.save_path','tpc://127.0.0.1:6379?persistent=1&auth=授权密码&database=redis数据库');

//设置session内容,在内容中存储当前key的过期时间
$_SESSION['user_info'] = [
	'data'=>['id'=>1],
	'expire'=>time()+60*30
];

//获取session内容
$data = $_SESSION['user_info'];

//判断当前session是否过期
if($data['expire']>time()){
	//删除session中已过期的key
	unset($_SESSION['user_info']);
	echo 'session已过期';
}else{
	print_r($data['data']);
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值