PHP Session配置详解:从Cookie使用到个性化设置全解析

本文详细地对 PHP session 的基础配置进行了解析。其中包括了对 cookie 的运用,还有参数的设置,像 GC 机制以及过期时间等方面。同时也涵盖了客户端与服务端销毁 session 的方式,以及个性化配置的关键要点。

PHP Session配置详解:从Cookie使用到个性化设置全解析

摘要由CSDN通过智能技术生成

先阐明本人关于session的基本配置

在 php.ini 文件中进行设置,通过使用浏览器 cookie 来传递 session,设置为 session.use_cookies = 1

session和cookie的交互

PHP 服务端启用 session_start 后,浏览器运行脚本时会自动生成一个名为“PHPSESSID”的 cookie。这个 cookie 的值与存放在服务端的 session 文件名字相同。当浏览器向服务端发起请求时,会将 cookie 值传递给服务端。服务端识别这个 cookie 后,就可以将客户端信息保存到 session 中。

关于session的相关参数设置

PHP 的 session 具有回收机制,即 GC—garbage collect 。

当有一个有效的请求出现时,PHP 会依据全局变量 session.gc_probability 以及 session.gc_divisor 的值,去决定是否开启一个 GC。在通常的情况下,

session.gc_probability = 1

session.gc_divisor = 1000

gc_probability 除以 gc_divisor 的值就是 GC 的触发几率。这意味着,当客户端产生 1000 次请求时,才会触发 1 次 GC。

PHP 设置 session 的过期时间为 session.gc_maxlifetime,其默认值是 1440 秒。当触发垃圾回收(GC)时,PHP 会计算 session 文件的最后修改时间,若该时间超过默认的 gc_maxlifetime 设置时间,那么 session 文件就会被删除。

session 的 cookie_lifetime 是 PHP 设置的含有 session 信息的 cookie 在浏览器中的过期时间。默认情况下为 0,这意味着当浏览器关闭时该 cookie 才会消失,也就意味着服务端的 session 会失效。

销毁session方式

客户端销毁的方式是单独设置 cookie_lifetime 。例如,设置 cookie_lifetime = 30 ,那么 30 秒后该 cookie 就会失效。在这种情况下,意味着服务器会重新生成一个 session 。这样一来,原来的 session 信息在客户端就会消失,尽管在服务端仍然能够看到,但客户端已经没有原来的 session 信息了。

方服务端销毁的情况如下:设置 gc_maxlifetime 后,session 信息会保存在一个文件中。若该文件的最后修改时间加上过期时间仍小于当前时间,那么这个 session 文件就会被删除。然而,经常会发现 session 文件没有被删除,其原因在于 GC 的触发机制。该机制默认是 0.1%,也就是说,你反复请求 1000 次,才会触发一次删除过期 session 文件的操作。当你修改 gc_probability 或者 gc_divisor 的值时,比如 gc_divisor = 0,那么一定会触发删除过期 session 文件的操作。但如果每次浏览器请求都触发 GC,就会导致服务器性能下降。

这是 session 的基础配置。关于单独网站的个性化配置以及其生效的相关内容,我将在另一篇文章中进行介绍。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

45阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读