• 全都有综合资源网

    分享赚钱

    一个专业的免费资源网

    每天更新100+优质资源

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方微信群

【PHP实例】修改SESSION的生存时间详细介绍

技术文章 每日更新
2024-6-7 10:28 99人浏览 0人回复
原作者: 全都有综合资源网 来自: 全都有综合资源网 收藏 分享 邀请
摘要

PHP 示例: 修改SESSION的生存时间详细介绍,因为这是面试中经常遇到的问题,所以就把这个问题整理记录下,分享给大家 修改SESSION的生存时间,让我们手动设置Session的生存期:<?phpsession_start();//保存一天$lifeT ...

 

【PHP实例】点窜SESSION的保存时候具体先容5736 作者:全都有综合资本网 来历:全都有综合资本网 公布时候:2024-6-7 10:28

PHP 示例: 点窜SESSION的保存时候具体先容,由于这是口试中经常碰到的题目,所以就把这个题目整理记录下,分享给大师
点窜SESSION的保存时候,让我们手动设备Session的保存期:
  1. <?php  

  2. session_start();   

  3. // 保存一天   

  4. $lifeTime = 24 * 3600;   

  5. setcookie(session_name(), session_id(), time() + $lifeTime"/");   

  6. ?>  

实在 Session 还供给了一个函数 session_set_cookie_params(); 来设备 Session 的保存期的,该函数必须在 session_start() 函数挪用之前挪用:

  1. <?php   

  2. // 保存一天   

  3. $lifeTime = 24 * 3600;   

  4. session_set_cookie_params($lifeTime);   

  5. session_start();  

  6. $_SESSION["admin"] = true;   

  7. ?>  

假如客户端利用 IE 6.0 , session_set_cookie_params(); 函数设备 Cookie 会有些题目,所以我们还是手动挪用 setcookie 函数来建立 cookie。
 

php中session过期时候设备

网上很多人给出领会答:点窜php设置文件中的session.gc_maxlifetime。假如想领会更多session接管机制,继续阅读。

概述:每一次php请求,会有1/100的几率(默许值)触发“session接管”。假如“session接管”发生,那就会检查/tmp/sess_*的文件,假如最初的点窜时候到现在跨越了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期生效。
 

1. session在server端(通常为Apache with PHP module)若何存在的?

默许的,php会将session保存在/tmp目录下,文件名为这个样子:sess_01aab840166fd1dc253e3b4a3f0b8381。每一个文件对应了一个session(会话)。

more /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381

username|s:9:”jiangfeng”;admin|s:1:”0″;

#变量名|范例:长度:值

删除这里的session文件,就暗示对应的session生效了。

 

2. session在client端(通常为阅读器)若何存在的?

session在阅读器端,只需要保存session ID(由server端天生的唯一ID)便可以了。有两种保存方式:在cookie中、在url里面。假如cookie中保存session ID,便可以看到阅读器的cookie中有一个PHPSESID变量。假如是URL传递的,便可以看到形如:
index.php?PHPSESID=01aab840166fd1dc253e3b4a3f0b8381的URL。(在server端经过session.use_cookies来控制利用哪一种方式)

3. 在server端,php若何停止判定session文件系统能否存在过期?

假如”最初的点窜时候”到”现在”跨越了gc_maxlifetime(默许是1440)秒,这个session文件就被以为是过期了,鄙人一次session接管的时辰,假如这个文件仍然没有被更悔改,这个session文件就会被删除(session就过期了)。

简单来说,我登录一个网站,假如在1440秒内(默许值)没有操纵过,那末对应的session就被以为过期了。

是以,点窜php.ini文件中的gc_maxlifetime变量便可以耽误session的过期时候了:(例如,我们将过期时候变动成86400秒)

session.gc_maxlifetime = 86400

然后,只需重启您的web办事(凡是是apache)。

留意:php5里面session过期利用了接管机制。这里设备时候为86400秒,假如session在86400秒内没有被修悔改,那末鄙人一次“接管”时才真的被删除。


4. session“接管”何时发生?

默许情况下,每一次php请求,就会有1/100的几率发生接管,所以能够简单的了解为“每100次php请求就有一次接管发生”。这个几率是经过以下参数控制的

  1. #几率是gc_probability/gc_divisor  

  2. session.gc_probability = 1  

  3. session.gc_divisor = 100  

留意1:假定这类情况gc_maxlifetime=120,假如某个session文件最初点窜时候是120秒之前,那末鄙人一次接管(1/100的几率)发生前,这个session仍然是有用的。

留意2:假如你的session利用session.save_path中利用此外地方保存session,session接管机制有能够不会自动处置过期session文件。这时需要按时手动(大概crontab)的删除过期的session:cd /path/to/sessions; find -cmin +24 | xargs rm
 

5. 一些特别情况

由于接管机制会检查文件的“最初点窜时候”,所以假如某个会话是活跃的,可是session的内容没有改变过,那末对应的session文件也就没有改变过,接管机制会以为这是一个长时候没有活跃的session而将其删除。这是我们不愿看到的,可以经过增加以下的简单代码处理这个题目:

  1. <?php  

  2. if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60)  

  3.  $_SESSION['last_access'] = time();  

  4. ?>  

代码会每隔60秒,尝试点窜点窜一次session。
 

总结:假如想点窜session过期时候,点窜变量gc_maxlifetime便可以了。php5的session采用被动的接管机制(garbage collection)。过期的session文件不会自己消失,而是经过触发“接管”来处置过期的session。



©版权免责声明
1、本站所有资源均来自用户上传及互联网。 如有侵权,请联系站长!
2、分享目的仅供大家学习交流。 下载后必须在24小时内删除!
3、不得用于非法商业目的或违反国家法律。 否则,后果自负!
4、本站提供的源代码、模板、插件等资源不包含技术服务。 敬请谅解!
5.如果出现无法下载、无效或有广告的链接,请联系管理员寻求帮助!
6、本站资源价格仅用于赞助,所收取的费用仅用于维持本站日常运营!
7、如果遇到加密压缩包,请使用WINRAR解压。 如果遇到无法解压的加密压缩包,请联系管理员!
8、由于精力有限,很多源代码无法详细测试(解密),部分源代码无法区分为病毒或误报,所以没有进行修改。 请在使用前进行筛选。

路过

雷人

握手

鲜花

鸡蛋
热门教程
专业的免费源码资源分享平台
每天更新100+资源

招募版主发工资

  • 官方在线客服

    QQ客服:红颜

    点击交谈

    在线客服:良子

    点击交谈

    在线客服:闵月

    点击交谈
  • 上海市虹口区海伦中心B座4F4055-4056室

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信公众号

    加入官方微信

一个专业的免费源码资源互联网分享平台 ©2001-2024 https://www.douyouvip.com全都有综合资源网( 豫ICP备2024057239号-1 )赞助会员|网站地图 HTML
全都有综合资源网,WordPress主题PHP源码,PHP网站源码,网站模板,软件源码,网站源码免费下载,免费网站源码,网站源码模板,免费网站源码下载,wp免费源码,wp免费主题下载,PHP企业网站源码,软件源码下载