PHP会话每1小时自动过期一次,即使会话过期是隐式设置的


PHP session is getting expired for every 1 hour automatically even if session expiry is set implicitly

我正在将会话设置为登录后4小时有效。但会话正是在四舍五入时间到期的(下午12点、凌晨1点、凌晨2点等)

例如:如果在下午12点或12点30分登录,会话将在下午1点到期。

这是我的密码。

// server should keep session data for AT LEAST 4 hour
ini_set('session.gc_maxlifetime', 14400);
session_start();
$_SESSION['login'] = 1;
$login_session_id=session_id();

您在共享服务器上吗?

如果是这样,则需要将会话目录设置为默认/tmp/以外的其他目录。

发生的情况是,如果服务器上的任何其他应用程序的会话时间小于一个小时,则无论您的应用程序会话时间设置为多少,它都将在一个小时内使您的会话数据过期。

我花了很多时间才弄明白,但一旦你了解了PHP的会话垃圾收集是如何工作的,它就有意义了。

如果您实际使用的是CakePHP,那么您可以将会话处理程序设置为使用"cake"而不是"php",这将在app/tmp/session而不是/tmp中存储会话。

<?php
echo " Nfo5o " ;
set_cookie (expire, 84600);
?>