共享Session

本文深入解析Session和Cookie的工作原理,探讨单服务器与集群环境下两者的应用。重点介绍如何利用memcached实现session共享,确保跨服务器登录状态的一致性。

Session:服务器创建的文件,用于记录用户的登录信息。文件在服务器上。
Cookie:当用户登录成功以后,服务器会返回给客户机浏览器一个Cookie,主要记录的是Session的信息。对于单服务器而言,只要客户机浏览器上的Cookie不清空,用户就不需要再次登录。

一、单服务器:

	client ---> server
	步骤:
		1.客户机输入账号密码进行登录。
		2.登录成功以后服务器会创建一个文件(Session),用来保存用户登录状态。
		3.为用户返回登录成功之后的页面,并且返回Cookie
		4.浏览器显示页面,保存服务器传递的Cookie
		#只要Cookie不清空,并且服务器的Session文件存在,就不需要再次登录。
		Session文件存在/var/lib/php/session/

二、集群:
在这里插入图片描述

	使用集群可以能会出现让用户重复登录的情况。
	解决这种问题可以在nginx代理服务器上配置ip_hash。
	还可以让多个web服务器,共享session。

三、构建memcached服务:

	memcache:是一个数据库软件,数据存储在内存,用来做缓存数据库
	它没有数据库和表的概念,数据存储采用 key value的形式。
	安装memcache:
	yum -y install memcached
	配置文件:/etc/sysconfig/memcached
	服务启动的配置文件:/usr/lib/systemd/system/memcached.service
	#/usr/lib/systemd/system/这个目录特别重要,
	#是否可以通过systemctl启动服务就要看这个文件夹下是否有 xxx.service文件。

	使用telnet测试memcache:
	yum -y install telnet	#安装telnet
	telnet 192.168.4.5 11211	#使用telnet连接memcache数据库
	set 变量名 0 180 3存数据	#操作不重要,主要是测试
	例如:set data_info 0 180 3	#0表示不压缩,180表示缓存时间,3表示存储数据大小为3字节

四、使用php测试memcached:

	安装php的memcached扩展包:
	yum -y install php-pecl-memcache	#安装扩展包,注意名称
	重启php服务:
	systemctl restart php-fpm
	
	php脚本如下:
	<?php
	$memcache=new Memcache;                //创建memcache对象
	$memcache->connect('192.168.4.5',11211) or die ('could not connect!!');
	$memcache->set('key','value~~!!');             //定义变量
	$get_values=$memcache->get('key');        //获取变量值
	echo $get_values;
	?>

五、通过php实现session共享:

	1.为所有的web服务器安装php的memcache扩展包
	yum -y install php-pecl-memcache
	
	2.修改php配置文件 /etc/php-fpm.d/www.conf
	//文件的最后2行
	php_value[session.save_handler] = files	#session保存在文件中
	php_value[session.save_path] = /var/lib/php/session	#保存的目录
	修改为:
	php_value[session.save_handler] = memcache	#session保存在memcache中
	php_value[session.save_path] = "tcp://192.168.2.5:11211"	#保存的地址
	
	重启php服务:systemctl restart php-fpm

总结一下:当memcache服务器关闭或者重启时,数据会全部丢失,session只是记录了用户的登录的信息,这个信息不是太重要,丢失了让用户重新登录就会产生新的session。因此可以存在memcache中。

写总结的第十九天!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值