Php session_start和session.gc_maxlifetime出现问题

Php session_start和session.gc_maxlifetime出现问题,php,session,session-timeout,Php,Session,Session Timeout,我想设置session.gc\u maxlifest。但超时值本身在会话中。 我试着使用下面的代码,但不起作用 session_start(); //Do some database and session operations ini_set( 'session.gc_maxlifetime', $_SESSION['timeout'] ); session_start(); 如果您试图通过会话超时来设置session.gc_maxlifetime,我想这种方法是完全错误的 这是因为会

我想设置session.gc\u maxlifest。但超时值本身在会话中。 我试着使用下面的代码,但不起作用

session_start();

//Do some database and session operations

ini_set( 'session.gc_maxlifetime', $_SESSION['timeout'] );

session_start();

如果您试图通过会话超时来设置session.gc_maxlifetime,我想这种方法是完全错误的

这是因为会话设置应该在会话开始之前定义

试试这个-

$timeout=$_SESSION['timeout']

$old_session_id = session_id();

# write and close current session
session_write_close();


ini_set('session.gc_maxlifetime', $timeout);

# now we can switch the session over, capturing the old session name
$old_session_name = session_name($session_name);
session_id($session_id);
session_start();

# get the desired session data
$session_data = $_SESSION;

我用下面的代码实现了这一点

$arrMixTempSession = $_SESSION;
session_destroy();

ini_set('session.gc_maxlifetime', $_SESSION['timeout'] * 60 );
session_start();

$_SESSION = $arrMixTempSession;

您有php会话的动态更改超时吗?为什么?经过长时间的处理后,我从数据库获得了超时秒数。数据库超时与php会话超时有什么关系?您确定没有获得最大执行超时吗?在任何情况下,为什么不在
php.ini
上全局设置相应的超时?我们无法访问php.ini。此外,用户智能超时存储在数据库中。用户登录后,我会获得超时值。我会从设置该值的任何其他应用程序中获取应用程序中的$\u SESSION['timeout']。但这两个应用程序的会话是相同的!是吧??好啊我正在编辑我的答案,试试这样的方法。也许,这应该可以做到。wait.User-wise超时存储在数据库中。一旦用户在我得到超时值后登录,我想说的是,在会话运行时,您不能更改会话设置。为此,首先需要关闭会话,然后可以更改它们。是的,你是对的。我想在不丢失会话值的情况下关闭会话->设置超时->使用会话\ u start()启动会话。可能吗?