我想增加我的php会话时间至6小时。增加php会话时间
这里是增加会话时间代码:
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours
然而,似乎只有1个小时的会话时间。
任何建议,非常感谢。
此外,如何测试此功能,而无需等待6个小时以查看会话是否超时。
我想增加我的php会话时间至6小时。增加php会话时间
这里是增加会话时间代码:
ini_set('session.gc_maxlifetime', 60 * 60 * 6); // 6 Hours
然而,似乎只有1个小时的会话时间。
任何建议,非常感谢。
此外,如何测试此功能,而无需等待6个小时以查看会话是否超时。
你还需要改变你的php.ini
参考http://prajapatinilesh.wordpress.com/2009/01/14/manually-set-php-session-timeout-php-session/的参数一对夫妇更多的变数。
使用本
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]);
这根本不正确。乘法的顺序无关紧要。 – FoolishSeth 2012-10-27 08:34:43
这就是我见过的最差的答案;) – misantronic 2017-02-09 18:29:45
尝试以下各项
的ini_set( '的session.gc_maxlifetime',60 * 60 * 6);
或者
的ini_set( '的session.gc_maxlifetime',21600);
空格不重要,也不需要手动将值相乘。为什么这个问题似乎吸引了这样的反应? – Leng 2013-11-13 23:24:31
如果存在使用相同session.save_path的另一个脚本(例如,其他虚拟主机),则通过ini_set增加session.gc_maxlifetime可能不起作用。其他脚本由它自己的生命周期中删除所有脚本的会议:
注:
如果不同的脚本具有不同的session.gc_maxlifetime数值但是共享了同一个地方存储会话数据,则该脚本最小值将清理数据。在这种情况下,请将此指令与session.save_path一起使用。
来源:http://php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
另外,请务必在session_start前更改设置()。如果启用了session.auto_start,则在使用ini_set时会晚。
场景
你运行Debian Linux或Ubuntu Linux操作系统。您希望PHP会话持续时间超过默认的1440秒(24分钟)。所以,你这样做:
ini_set('session.gc_maxlifetime', 10800); # 3 hours
使用此设置,会议应至少三小时保持活动状态,只要用户不关闭其browser.1
但是不管你做什么,会话在24-54分钟后不断删除。看来PHP忽略了gc_maxlifetime设置。
为什么发生这种情况
Debian和Ubuntu Linux的覆盖PHP的会话行为。如果仔细观察,您会发现session.gc_probability被设置为0,这意味着PHP的垃圾收集将永远不会运行。相反,/etc/cron.d/php5中有一个特定于Debian的cron作业,每30分钟运行一次!
cron作业基于php.ini中的全局session.gc_maxlifetime进行垃圾回收。应用中的session.gc_maxlifetime被忽略。
解决方案
虽然你可以禁用cron作业和/或修改php.ini中,我更愿意解决问题,而无需修改系统默认值。更好的解决方案是创建自己的会话目录,在正常的目录之外的某个地方,然后在本地启用PHP的会话垃圾回收。
为此,set session.gc_maxlifetime, session.gc_probability, session.gc_divisor, and session.save_path
:
# 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();
这个答案似乎是从这个博客文章复制:http://natesilva.tumblr.com/post/250569350/php-sessions-timeout-too-soon-no-matter-how-you。你是博客的作者,还是你找到它并复制相关信息? – Edward 2017-01-25 20:40:31
是'ini_set'允许你的系统?你在'session_start()'之前调用它吗? – Czechnology 2011-03-08 20:52:05
当你在'ini_set()'之后的同一页上执行'phpinfo()'时,'session.gc_maxlifetime'的条目是什么意思? – drudge 2011-03-08 20:54:33
我想将会话超时创建为6小时,但我的浏览器在1/2小时内超时。我在PLESK服务器上。 我更新的.htaccess有设置: php_value的session.gc_maxlifetime 21600 php_value session.cache_expire 21600 php_value session.cookie_lifetime 21600 下面是相关的phpinfo: 的session.gc_maxlifetime \t本地= 21600 \t主= 1440 session.cache_expire \t local = 21600 \t master = 180 session.gc_maxlifetime \t local = 21600 \t master = 1440 – Ken 2011-03-10 19:19:15