增加php会话时间

增加php会话时间,php,session,Php,Session,我正在尝试将我的php会话时间增加到6小时 以下是增加会话时间的代码: ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours 但是,它的会话时间似乎只有1小时 非常感谢您的任何建议 另外,我如何测试此功能而不必等待6小时来查看会话是否超时。使用此功能 ini_set('session.gc_maxlifetime', 6 * 60 * 60); // 6 Hours instead to this ini_set('sess

我正在尝试将我的php会话时间增加到6小时

以下是增加会话时间的代码:

ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours 
但是,它的会话时间似乎只有1小时

非常感谢您的任何建议

另外,我如何测试此功能而不必等待6小时来查看会话是否超时。

使用此功能

ini_set('session.gc_maxlifetime', 6 * 60 * 60); // 6 Hours  instead to this 
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 1 Hours 
ini_set('session.gc_maxlifetime', [hours] * [minutes] * [seconds]); 
试着跟随-

  • 避免空格
ini_集('session.gc_maxlifest',60*60*6)

  • 只需以秒为单位输入值…
ini_集合('session.gc_maxlifetime',21600)


如果运行的另一个脚本(例如,另一个vhost)使用相同的session.save_路径,则通过ini_集增加session.gc_maxlifetime可能不起作用。另一个脚本按其自身的生存期删除所有脚本的会话:

注意:
如果不同的脚本具有不同的session.gc_maxlifest值,但共享存储会话数据的相同位置,则具有最小值的脚本将清除数据。在这种情况下,请将此指令与session.save_path一起使用

资料来源:


还请确保在会话_start()之前更改设置。如果启用了session.auto_start,则使用ini_set时会延迟。

场景

您正在运行Debian Linux或Ubuntu Linux。您希望PHP会话的持续时间超过默认的1440秒(24分钟)。所以你要这样做:

ini_set('session.gc_maxlifetime', 10800);    # 3 hours
使用此设置,只要用户不关闭浏览器,会话应保持活动状态至少三个小时。1

但无论你做什么,会话都会在24-54分钟后被删除。PHP似乎忽略了gc_maxlifetime设置

为什么会发生这种情况

Debian和UbuntuLinux覆盖PHP的会话行为。如果仔细观察,您将看到session.gc_概率设置为0,这意味着PHP的垃圾收集将永远不会运行。相反,在/etc/cron.d/php5中有一个特定于Debian的cron作业,每30分钟运行一次

cron作业根据php.ini中的global session.gc_maxlifest执行垃圾收集。应用程序中的session.gc_maxlifetime被忽略

解决方案

虽然您可以禁用cron作业和/或修改php.ini,但我更愿意在不修改系统默认值的情况下修复该问题。更好的解决方案是在普通会话目录之外创建自己的会话目录,然后在本地启用PHP的会话垃圾收集

要执行此操作,
设置session.gc\u最大生存期、session.gc\u概率、session.gc\u除数和session.save\u路径

# Session lifetime of 3 hours
ini_set('session.gc_maxlifetime', 10800);

# Enable session garbage collection with a 1% chance of
# running on each session_start()
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 100);

# Our own session save path; it must be outside the
# default system save path so Debian's cron job doesn't
# try to clean it up. The web server daemon must have
# read/write permissions to this directory.
session_save_path(APP_PARENT_DIR . '/sessions');

# Start the session
session_start();
Lemp/LAMP(Ubuntu)我解决了我的问题

编辑:
sudo nano/etc/php/7.2/fpm/php.ini

gc_maxlifetime 1440到任意大的数字

session.gc_maxlifetime = 144000

您的系统是否允许设置
ini\u?您是在
会话\u start()
之前调用它吗?
会话.gc\u maxlifest
的条目在您执行
phpinfo()时说了什么ini_set()
之后的同一页上的code>?我想将会话超时设置为6小时,但我的浏览器在1/2小时后超时。我在PLESK服务器上。我更新了.htaccess来设置:php_value session.gc_maxlife 21600 php_value session.cache_expire 21600 php_value session.cookie_life 21600这里是相关的PHPinfo:session.gc_maxlife local=21600 master=1440 session.cache_expire local=21600 master=180 session.gc_maxlife local=21600 master=1440-用于共享主机提供者检查=这根本不正确。乘法的顺序无关紧要。那只是我见过的最糟糕的答案;)空格不重要,也不需要手动乘以值。为什么这个问题似乎吸引了这样的回应?这个答案似乎是从这篇博文中抄来的:。你是这个博客的作者,还是你只是找到了它并复制了相关信息?