php的session实现
对于两次http请求,如果第一次http请求的重要数据要被第二次请求获取,办法是将第一次http请求数据保存下来,保存的办法很多,大体上有使用数据库,缓存,文件等等,那么php中的session实现实际上就是用文件保存http请求的重要数据,我们这里先看看php的session的实现
1、我们先看一下浏览是否有我们测试服务器的cookie信息,如果有,先移除掉。
2、我们开始一个非常简单的php脚本,从浏览器发起请求。
<?php session_start();if(isset($_SESSION["name"])) {echo $_SESSION["name"]; } else {echo "name set";$_SESSION["name"] = "Tom"; }
3、我们在服务器端抓包看一下浏览器发送给web服务器的数据包,可以看到在删除我们测试服务器的cookie信息后,发送过去的http头不再带有cookie信息。
open("/tmp/sess_84uv4bfgrngrgr1285s8a9d8a6", O_RDWR|O_CREAT, 0600) = 5 flock(5, LOCK_EX) = 0 fcntl64(5, F_SETFD, FD_CLOEXEC) = 0 fstat64(5, {st_mode=S_IFREG|0600, st_size=15, ...}) = 0 lseek(5, 0, SEEK_SET) = 0 read(5, "name|s:3:\"Tom\";", 15) = 15 chdir("/usr/local/sina_mobile/php/sbin") = 0 clock_gettime(CLOCK_MONOTONIC, {870988, 244632423}) = 0 times({tms_utime=0, tms_stime=1, tms_cutime=0, tms_cstime=0}) = 516512946 brk(0xa174000) = 0xa174000 brk(0xa1b4000) = 0xa1b4000 brk(0xa134000) = 0xa134000 lseek(5, 0, SEEK_SET) = 0 write(5, "name|s:3:\"Tom\";", 15) = 15 close(5) = 0
这里面还看见了tmp文件下session内容的存储格式,我们设置的name值为Tom,存储在文件下,是 name|s:3:"Tom";
方法I: 在 php.ini 中全局设置
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211"); 使 用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。
如果安装的PECL是memcached(使用libmemcache库的那个),则配置应为
ini_set("session.save_handler", "memcached"); // 是memcached不是memcache
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:
转载于:https://www.cnblogs.com/yimuren/p/4596038.html
php的session实现相关推荐
- 2022面试200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring
200题目和答案分布式+微服务+MYSQL+Redis+JVM+Spring等等 带图MD在资源https://download.csdn.net/download/m0_47987937/86509 ...
- Struts2 Cannot create a session after the response has been committed 一个不起眼的错误
严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException: Cannot c ...
- 解决nginx负载均衡的session共享问题
之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx session共享问题,查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享服务器有多台,用ngi ...
- 你想了解的Cookie和Session就在这~
目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...
- Cookie和Session的区别与联系
Cookie和Session Session 会话的理解 Session的作用 HTTP协议的无状态特点 Session的实现原理(重点) Session常用方法: Cookie 基本介绍 经典案例 ...
- php – Laravel 7 Session Lifetime
根据Laravel config / session.php /* |----------------------------------------------------------------- ...
- [JAVA EE]session 和 token 机制
HTTP 协议是无状态的. 即服务器对于客户端每次发送的请求都认为它是一个新的请求. 本次请求和上次请求无法判断是不是同一个客户端操作的. 随着 Web 应用的发展,如在线购物网站,需要登录的网站等, ...
- redis缓存和cookie实现Session共享
分布式项目中要实现单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com.c.com)都认 ...
- 负载均衡中使用 Redis 实现共享 Session
最近在研究Web架构方面的知识,包括数据库读写分离,Redis缓存和队列,集群,以及负载均衡(LVS),今天就来先学习下我在负载均衡中遇到的问题,那就是session共享的问题. 一.负载均衡 负载均 ...
- session文件无法并发操作
session_start():打开服务器上的session文件. session_commit():会把$_SESSION数组的内容写入到服务器上的session文件中,但不会清空$_SESSION ...
最新文章
- ExcelReport第三篇:扩展元素格式化器
- 《敏捷迭代开发:管理者指南》—第2章2.14节推荐读物
- python二维数组遍历输出每行最大值_如何在二维数组中找到每行的最大值?
- NetBeans IDE 8.0和Java 8的新功能
- MYSQL 在当前时间加上或减去一个时间段
- Introduction to the 80386
- 如何删除MySQL服务
- 微信小程序超级占内存_微信小程序彻底拯救16GB手机 小程序与APP占用内存对比...
- 关于磁碟机及Javqhc病毒
- GOBY--一款攻击面测绘工具的使用
- 【转】CC2530/2531/2533对比
- 五款优质资源网站 每一个都让你欲罢不能
- 线性回归模型(Linear regression model)
- Oracle11g下载地址Oracle下载
- Egret 2d 实现黑暗下光照效果
- Unity中EnableDisableComponent的用法
- 施工日志软件哪个好用_哪个单词记忆软件好用?推荐单词突击营软件
- PCI、PCI-X、PCI-E、PCI-E Card、Mini PCI-E、M.2、Add-in Card 它们有啥区别?这些概念你搞清楚了吗?
- mysql 同步到es_mysql数据实时同步到Elasticsearch
- 云服务器怎么安装声音驱动_关于阿里云服务器安装显卡驱动类型的