Toy*_*dor 4 php apache ubuntu session session-timeout
昨晚我登录,第二天早上我仍然登录,即使我退出浏览器.我希望会话在几个小时后过期,我认为它可以用"session.gc_maxlifetime"设置为"1440","session.cache_expire"设置为"180"
这是我从PHP.ini中可以找到的内容
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
session.auto_start Off
session.bug_compat_42 Off
session.bug_compat_warn Off
session.cache_expire 180
session.cache_limiter nocache
session.cookie_domain no value
session.cookie_httponly Off
session.cookie_lifetime 0
session.cookie_path /
session.cookie_secure Off
session.entropy_file no value
session.entropy_length 0
session.gc_divisor 1000
session.gc_maxlifetime 1440
session.gc_probability 0
session.hash_bits_per_character 5
session.hash_function 0
session.name PHPSESSID
session.referer_check no value
session.save_handler files
session.save_path /var/lib/php5
session.serialize_handler php
session.use_cookies On
session.use_only_cookies On
session.use_trans_sid 0
Run Code Online (Sandbox Code Playgroud)
在我们的旧服务器上,我们使用相同的设置和会话.与旧版本的唯一区别是在旧服务器上设置为"memcache"的"session.save_handler"."session.save_path"也不同.
依靠其他东西并希望他们工作不是我的事.:DI认为最好的解决方案是自己实现会话超时.使用表示最后一次活动(即请求)的时间的简单时间戳,并使用每个请求更新它:
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
Run Code Online (Sandbox Code Playgroud)
使用每个请求更新会话数据也会更改会话文件的修改日期,以便垃圾收集器不会过早地删除会话.
〜Foorack