session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的
一、session_id()对原来session文件和里面的数据,是怎么处理的?
测验办法:
<?php
$sid = md5("aaad");
session_id($sid);
session_start();
var_dump(session_id());
$_SESSION['ddd'] = 123;
?>
是新创建一个session文件。
那么原来PHPSESSID对应的服务器上的数据就不会用到了,因为新创建了一个文件。
二、研究上面这个有什么用途?
业务中需要
问题的背景:
* um.mama.cn/passport 和passport.mama.cn都是访问新版本passport系统。
*
* 当app跳转到网页时,app先在打开的webview中,请求passport的一个接口。
* app>>>>>http://passport.mama.cn/appapi/setWebViewSession?app_code=xxx
* passport验证成功后,会设置webview为登录状态(即把登录状态存储到memcache)
*
* 但,网页访问的域名却是um.mama.cn/passport,两个域名不同,PHPSESSID就不同。之前设置的登录状态无法同步到um.mama.cn域名
*
* 目前思路是:登录状态是放在共享位置-memcache中,登录状态要想共享,让两个域名的PHPSESSID保持一样即可。同样的sid,可以去memcache查询数据。
*
* 具体做法是:
* app请求接口时,设置登录状态后,顺便将passport.mama.cn的sid备份到一个让passport.mama.cn也能读取的公共域名下:mama.cn
* 进入um.mama.cn时候,从mama.cn获取备份的sid,于是将um.mama.cn的sid重置
代码如下:
<?php
if(isset($_COOKIE['app_passport_login_sid']) && $_COOKIE['app_passport_login_sid']){
$sid = trim($_COOKIE['app_passport_login_sid']);
session_id($sid);
setcookie(session_name(), $sid, time()+86400, '/');
session_start();
//这个cookie用完毕后删除掉,避免影响
setcookie('app_passport_login_sid', $sid, time()-86400, '/','.mama.cn');
}
?>
我想知道session_id()重置为指定的sid,有以下疑惑,解决这些疑惑以便评估对业务的影响:
重置为一个sid,是新创建一个session文件?还是把原来的session文件重命名即可呢?
如果是新创建一个新的session文件,那么:php会对原来的磁盘上的session文件怎么处理呢?
通过上面的试验,答案为:
1、只是新创建一个session文件。而且是一个空文件。以前文件的数据并不会带到新文件中
2、原来的session文件并不会删除掉。保留在磁盘上。估计是垃圾回收机制的时候会自动删除?
三、顺便研究session_regenerate_id()对原来的session文件和数据的处理方式
只是将原来的文件名称重命名为一个新的么。这样数据还是在的。
session_regenerate_id() 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID。
delete_old_session
是否删除原 ID 所关联的会话存储文件。
这个看介绍:拷贝一份原来的session数据文件,然后重命名为一个新的sid名称
比如,session_sid1 新建了一个文件 session_sid2
原来的数据文件会带到新的session文件中去的。
测验办法:
session_start();
session_regenerate_id();
var_dump(session_id());
session_id()和session_regenerate_id()对原来session文件和其中数据是怎么处理的的更多相关文章
- PHP自带Session隐患(session文件独占锁引起阻塞)
PHP自带Session隐患(session文件独占锁引起阻塞) PHP默认的会话处理器是session.save_handler = files(即文件).如果同一个客户端同时并发发送多个请求(如a ...
- php session 阻塞 过期不自动清除session文件
php默认session session_start后,php就会打开session文件,然后同一时间用户再用那个session_id访问,就会被前面那个请求阻塞直到前面一个访问结束才会释放文件在使 ...
- 关于PHP中Session文件过多的问题
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发“session回收”.如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了14 ...
- session文件无法并发操作
session_start():打开服务器上的session文件. session_commit():会把$_SESSION数组的内容写入到服务器上的session文件中,但不会清空$_SESSION ...
- 使用 session_destroy() 销毁session文件时 报 Trying to destroy uninitialized session 错误解决办法
在使用 sessio_destroy() 销毁session文件的时候,必须要先使用session_start() 来开启session 后才能删除session文件
- TF从文件中读取数据
从文件中读取数据 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 把样本数据写入TFRecords二进制文件 从队列 ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- [数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...
- .Net读取Excel文件时丢失数据的问题 (转载)
相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...
随机推荐
- OSPF补全计划-0 preface
哇靠,一看日历吓了我一跳,我这一个月都没写任何东西,好吧,事情的确多了点儿,同事离职,我需要处理很多untechnical的东西,弄得我很烦,中间学的一点小东西(关于Linux的)也没往这里记,但是我 ...
- GBT 33200-2016 社会治安综合治理 综治中心建设与管理规范 GBT 31000-2015 社会治安综合治理基础数据规范
阚总发的两个国标的标准文件, 看看里面对于数据和问题的分类等. 我们出统计分析,可以按照标准出各个大类小类的各种指标数据. 结合这几天给潍坊弄的12345的报告, 整理出一个可以结合吴中现有平台数据, ...
- Python3基础-高级用法
写在前面:本文主要是python高级练习部分,介绍了一些高级用法,这些都是零散的小知识,这些可以与函数式编程合在一起使用. 函数式编程1:Python中提供的函数式编程主要有: map(函数,可迭代式 ...
- Book Lending Registration
<!DOCTYPE HTML> <HTML lang="|en"> <head> <meta charset="UTF-8&qu ...
- sqlserver 为表添加一个自增主键
alter table person add id int primary key identity(1,1) not null
- Java基础知识总结--final、finally、finalize的区别
谈谈final.finally.finalize的区别 1.final修饰符:如果一个类被声明为final,意味着这个类不能再被派生出新的子类,不能作为父类被别的类继承.因此,一个类不能即被声明为ab ...
- JAVA自学笔记13
JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...
- 大神们都在用的两个国外的免费离线下载:Rain& LoadBT
大神们都在用的两个国外的免费离线下载:Rain& LoadBT 最近QQ离线和迅雷离线也都挂了,115还死贵,所以分享两个国外免费的网站.希望可以为大家提供一些帮助,同时也借此机会同大家相互交 ...
- [asp.net core]The requested page cannot be accessed because the related configuration data for the page is invalid.
bug HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed because the rela ...
- android平台修改默认语言的那点事
转自:https://blog.csdn.net/qinghua0706/article/details/8243858 最近开始做智能机,用的是展讯6820平台,第一个需求就是改默认语言,一般碰到不 ...