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中。
写总结的第十九天!!!
本文深入解析Session和Cookie的工作原理,探讨单服务器与集群环境下两者的应用。重点介绍如何利用memcached实现session共享,确保跨服务器登录状态的一致性。
1408

被折叠的 条评论
为什么被折叠?



