增加PHP会话生命周期。可能的副作用?

时间:2014-03-09 22:19:35

标签: php session

我正在尝试增加PHP会话生命周期。在阅读了互联网上的几个教程以及关于SO的问题和答案后,我已经没有想法为什么它不能在我的系统上运行。位于this page的最后一个测试代码段下方。

ini_set('session.gc_maxlifetime',10*60*60);
ini_set('session.gc_probability',1);
ini_set('session.gc_divisor',1);

$sessionCookieExpireTime = 10*60*60;
session_set_cookie_params($sessionCookieExpireTime);

session_start();

if (isset($_COOKIE[session_name()]))
  setcookie(session_name(), $_COOKIE[session_name()],
    time() + $sessionCookieExpireTime, '/');

if (!isset($_SESSION['username'])) {
    session_destroy(); // executed at most 2 hours after login
header('Location: /login.php');
}

if (/*login-form sent*/) {
    $_SESSION['username'] = 'foo';
}

ini_setsession_set_cookie_params似乎都有效:

之前:

string(4) "1440"
array(5) {
  ["lifetime"] => int(0)
  ["path"] => string(1) "/"
  ["domain"] => string(0) ""
  ["secure"] => bool(false)
  ["httponly"] => bool(false)
}

后:

string(5) "36000"
array(5) {
  ["lifetime"] => int(36000)
  ["path"] => string(1) "/"
  ["domain"] => string(0) ""
  ["secure"] => bool(false)
  ["httponly"] => bool(false)
}

但是不到两个小时后,我就退出了。是否存在增加会话寿命的副作用可能无效?我做了一些检查:

  • Cookie生存期正确设置了十个小时
  • 问题出现在所有使用不同浏览器的测试系统上,所以它似乎不是浏览器配置的本地问题
  • 在>之后刷新同一页面(不请求其中任何其他页面) 2个小时,我再也无法访问会话变量了。但是当我刷新超过24分钟(1440秒 - ini文件中的默认配置)后,会话仍然存在

0 个答案:

没有答案