- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
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
副本),会发生以下情况。
session_start()
,导致 PHP 打开/锁定文件、读取其内容、反序列化数据,顺便说一下,可能会更新 session 文件的“上次使用”时间戳(在 Unix 机器上为 atime )。现在,如果你做了这样的事情:
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/
为 phpMyAdmin 设置 $cfg['LoginCookieValidity'] = 604880; 后,我在 phpMyAdmin 中收到以下警告: Your PHP parameter se
一个已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存储到数据库,这样可以通过SQL语句来删除所有过期的sessi
我想将 session 超时限制设置为 3 分钟, 我在页面中使用了这个 ini_set("session.gc_maxlifetime", "50"); 不工作 解决方案 if (isset($_S
每次加载页面时,我都会运行 session_start() 以恢复当前 session 。 session.gc_maxlifetime 从什么时候开始计数?第一次调用 session_start()
我正在尝试在 PHP 中设置 gc_maxlifetime。 这是“header.php”中的代码,我在每个页面都包含了它。 ini_set('session.cookie_lifetime', 1)
我正在使用基于 Java 的上传结构 http://www.javaatwork.com/java-upload-applet/details.html我试着跑了一夜。 它基本上将所有内容都存储在服务
目前我的 session.gc_maxlifetime 设置为默认值,即 1440 秒。 我想将 maxlifetime 设置为一个月,即 4*7*24*60*60 秒。但是,我已经阅读了 php.n
session 的默认过期时间是 1440,我想将这个时间减少到 60 秒,但是当我在第一页使用 ini_set('session.gc_maxlifetime','60') 时工作,但它在其他页面上
如果我这样做: ini_set('session.gc_maxlifetime', 86400); 这是否意味着用户可以将浏览器留在同一页面上(不活动)最多 1 天,而不必担心 session 被垃圾
我在 stackoverflow 中的第一个问题。提前致谢! 我对 PHP session 机制很困惑。我已经通过 PHP - ini_set('session.gc_maxlifetime', 5)
PHP脚本如下: Your full name is $forename $surname. Your username is '$username'
我有以下代码来扩展我的 $_SESSION[] 变量。它们会在大约 2-3 小时后过期。 我尝试通过更改 session.gc_maxlifetime 将 session 延长到 22 小时,但几个小
我的问题很快就被描述为需要在不更改 php.ini 的情况下将 session 数据生命周期延长到 php.ini 中的默认设置。我正在寻找一种可以应用于跨服务器平台的许多不同 php 设置的解决方案
我是一名优秀的程序员,十分优秀!