返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php如何修改session的生存时间
  • 858
分享到

php如何修改session的生存时间

2023-06-07 23:06:37 858人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关PHP如何修改session的生存时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先我们先来手动设置session的生存期,如下:<?phpsession_start();

这篇文章将为大家详细讲解有关PHP如何修改session的生存时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

首先我们先来手动设置session的生存期,如下:

<?phpsession_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/"); ?>

其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:

<?php // 保存一天 $lifeTime = 24 * 3600; session_set_cookie_params($lifeTime); session_start();$_SESSION["admin"] = true; ?>

如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。

php中session过期时间设置

网上很多人给出了解答:修改php配置文件中的session.GC_maxlifetime。如果想了解更多session回收机制,继续阅读。(本文环境php5.2)

概述:每一次php请求,会有1/100的概率(默认值)触发“session回收”。如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效。

session在server端(一般是Apache with PHP module)如何存在的?

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

more /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381username|s:9:”jiangfeng”;admin|s:1:”0″;#变量名|类型:长度:值

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

学习视频分享:php视频教程

session在client端(一般是浏览器)如何存在的?

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

在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秒内没有被修改过,那么在下一次“回收”时才真的被删除。

session“回收”何时发生?

默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的

#概率是gc_probability/gc_divisorsession.gc_probability = 1session.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

一些特殊情况

因为回收机制会检查文件的“最后修改时间”,所以如果某个会话是活跃的,但是session的内容没有改变过,那么对应的session文件也就没有改变过,回收机制会认为这是一个长时间没有活跃的session而将其删除。这是我们不愿看到的,可以通过增加如下的简单代码解决这个问题:

<?phpif(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) $_SESSION['last_access'] = time();?>

代码会每隔60秒,尝试修改修改一次session。

总结:如果想修改session过期时间,修改变量gc_maxlifetime就可以了。php5的session采用被动的回收机制(garbage collection)。过期的session文件不会自己消失,而是通过触发“回收”来处理过期的session。

关于“php如何修改session的生存时间”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: php如何修改session的生存时间

本文链接: https://lsjlt.com/news/250432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • php如何修改session的生存时间
    这篇文章将为大家详细讲解有关php如何修改session的生存时间,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先我们先来手动设置session的生存期,如下:<phpsession_start();&...
    99+
    2023-06-07
  • PHP修改SESSION的生存时间的方法
    本篇内容介绍了“PHP修改SESSION的生存时间的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!需求背景:用户希望他登录之后,浏览器就...
    99+
    2023-06-20
  • PHP 修改SESSION的生存时间案例详解
    需求背景: 用户希望他登录之后,浏览器就帮他记住登录状态,这样他就不用每次进入的时候,都需要登录一次。 session过期时间: 如果我们没有设置session的生成时间,在配置文件...
    99+
    2024-04-02
  • php如何修改会话的生存时间
    小编给大家分享一下php如何修改会话的生存时间,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如何修改会话的生存时间?一:在php...
    99+
    2024-04-02
  • php如何修改cookie时间
    本篇内容主要讲解“php如何修改cookie时间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何修改cookie时间”吧!php中可利用setcookie()函数来修改cookie时间,...
    99+
    2023-06-20
  • php如何修改session值
    小编给大家分享一下php如何修改session值,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php修改session值的方法:1、在PHP文件中,使用“ini_set('选项', '值')...
    99+
    2023-06-14
  • php设置session保存时间
    在网站开发中,session是一种非常重要的机制,它可以帮助网站保存用户的登录信息、购物车数据和其他的类似信息,以便在用户浏览网站的过程中保持数据的一致性。通常情况下,session的存储时间是非常短暂的,因为一旦用户关闭了浏览器,sess...
    99+
    2023-05-22
  • 如何修改php的最大时间
    本文小编为大家详细介绍“如何修改php的最大时间”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何修改php的最大时间”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。修改php最大时间的方法:1、在php.ini...
    99+
    2023-06-26
  • php如何设置session时间
    本文小编为大家详细介绍“php如何设置session时间”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何设置session时间”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在使用PHP编写Web应用程序...
    99+
    2023-07-05
  • php如何修改响应时间
    本文将为大家详细介绍“php如何修改响应时间”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何修改响应时间”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。php...
    99+
    2023-06-06
  • php如何修改session配置
    这篇文章主要介绍“php如何修改session配置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何修改session配置”文章能帮助大家解决问题。Session 在 PHP 中是一种非常常用...
    99+
    2023-07-06
  • php如何修改服务器时间
    本文将为大家详细介绍“php如何修改服务器时间”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php如何修改服务器时间”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。p...
    99+
    2023-06-06
  • 如何修改php的最长运行时间
    这篇文章主要介绍了如何修改php的最长运行时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。修改php的最长运行时间的方法是,编辑php.ini配置文件,修改max_exec...
    99+
    2023-06-15
  • php如何修改脚本的执行时间
    这篇文章主要介绍“php如何修改脚本的执行时间”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何修改脚本的执行时间”文章能帮助大家解决问题。查看php.ini配置文件php.ini是PHP的系...
    99+
    2023-07-05
  • php如何获取最后修改时间
    本文小编为大家详细介绍“php如何获取最后修改时间”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何获取最后修改时间”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。获取最后修改时间的方法:1、使用filem...
    99+
    2023-07-04
  • 如何修改php脚本执行时间
    这篇文章主要讲解了“如何修改php脚本执行时间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何修改php脚本执行时间”吧!3种方法:1、打开“php.ini”文件,修改“max_execu...
    99+
    2023-06-30
  • php如何设置session失效时间
    这篇文章主要为大家展示了“php如何设置session失效时间”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何设置session失效时间”这篇文章吧。php设置session失效时间的方...
    99+
    2023-06-15
  • linux如何将时间修改保存到 BIOS
    ...
    99+
    2024-04-02
  • php时间如何改为时间戳
    本文小编为大家详细介绍“php时间如何改为时间戳”,内容详细,步骤清晰,细节处理妥当,希望这篇“php时间如何改为时间戳”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。将日期时间格式转换为时间戳格式在PHP中,使用...
    99+
    2023-07-05
  • 如何修改mysql时间
    这篇文章主要介绍了如何修改mysql时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 方法:1、用“sudo ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作