gpt4 book ai didi

PHP - ini_set ('session.gc_maxlifetime' , 5) - 为什么它没有结束 session ?

转载 作者:IT王子 更新时间:2023-10-29 00:05:31 25 4
gpt4 key购买 nike

PHP脚本如下:

<?php // continue.php
ini_set('session.gc_maxlifetime', 5);
session_start();
echo ini_get('session.gc_maxlifetime');
// wait for 7 seconds
usleep(7000000);
if (isset($_SESSION['username']))
{
$username = $_SESSION['username'];
$password = $_SESSION['password'];
$forename = $_SESSION['forename'];
$surname = $_SESSION['surname'];

echo "Welcome back $forename.<br />
Your full name is $forename $surname.<br />
Your username is '$username'
and your password is '$password'.";
}
else echo "Please <a href=authenticate2.php>click here</a> to log in.";

?>

基于超时(即 5 秒),脚本不应打印任何内容。但是,我仍然收到以下消息

5Welcome back Bill. Your full name is Bill Smith. Your username is 'bsmith' and your password is 'mysecret'.

ini_set('session.gc_maxlifetime', 5) 行似乎没有正常工作。我正在使用 windowsXP + XAMMP。

你能告诉我如何让它工作吗?

谢谢

最佳答案

即使垃圾收集器启动并删除了您使用 session_start() 打开/读取的 session 文件,它也不会进入该特定 PHP 进程的内部并删除 $ _SESSION 对象数组。

假设您使用的是标准的基于文件的 session 处理程序(其中包含 serialize()$_SESSION 副本),会发生以下情况。

  1. session 文件位于其临时目录中
  2. session_start(),导致 PHP 打开/锁定文件、读取其内容、反序列化数据,顺便说一下,可能会更新 session 文件的“上次使用”时间戳(在 Unix 机器上为 atime )。
  3. 如果星星和月亮与上升在第五宫的海王星正确对齐, session 垃圾收集器可能启动并删除旧 session 文件。
  4. 垃圾收集器将愉快地遍历 session 目录,并删除任何早于 max_lifttime 的文件,但不会删除任何当前打开/正在使用的文件。由于您尚未关闭()您的 session ,因此您的 session 文件仍在使用中,因此不会被删除。

现在,如果你做了这样的事情:

ini_set(...); // set GC probability to max, short session lifetime, etc...

session_start(); // populate $_SESSION
session_write_close(); // dump $_SESSION out to file, close file, release lock.

sleep(7); // Sleep for 7 seconds;

session_start(); // re-populate $_SESSION;

现在您可能会得到一个新的空白 $_SESSION,如果垃圾收集器决定启动。但是,除非您执行第二个 session_start(),上一次 start() 调用中的旧 $_SESSION 数据仍将存在。 session 文件可能已被丢弃,但垃圾收集器在运行时不会触及脚本内存中存在的内容。

关于PHP - ini_set ('session.gc_maxlifetime' , 5) - 为什么它没有结束 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com