有几天我试图增加网站管理区域的会话超时。当工作人员被电话打断时,工作人员必须登录并经常丢失所有数据。
我无法将php.ini文件设置得更高,因为此网站有数千名用户,会话文件夹将成为massiv。
我使用.htaccess将会话时间设置为一天。使用phpinfo()检查它显示本地值是86400。 使用ini_get也会返回86400
但是会话文件夹中没有文件比25分钟更早。距标准php.ini
1440秒我还可以做些什么来增加admin文件夹的会话超时?
答案 0 :(得分:1)
目前尚不清楚您将哪些php配置修改为86400
,但PHP会话与多个配置指令相关联,这些指令会影响会话的生命周期。
由于会话由两部分组成(生活在客户端的cookie,以及服务器端的会话文件),因此有两个主要值控制它们的生命周期
Cookie由session.cookie_lifetime
指令控制,默认情况下设置为0
,这意味着只要用户关闭浏览器就会过期。此值通常应大于或至少等于session_gc.maxlifetime
值。
服务器上的会话文件由session.gc_maxlifetime
指令控制,默认设置为1440
秒(24分钟)。这是服务器端会话在被PHP标记为垃圾回收之前可以保持非活动状态的时间。
还有许多其他变量影响服务器端会话的垃圾收集,但主要是会话生命周期和cookie生存期必须相等才能使会话有效地持续至少那么长时间。这两个指令都是秒数。
最后,您可能正在使用修补版本的PHP(如通常由基于Debian的发行版(如Ubuntu)提供的版本),它们将自己的垃圾收集例程放在他们的PHP包中。这可以由系统crontab控制,该系统执行自己的垃圾收集例程,可能会有效地改变库存PHP行为。
注意:强> 如果不同的脚本具有不同的
session.gc_maxlifetime
值,但共享相同的位置来存储会话数据,则具有最小值的脚本将清除数据。在这种情况下,请将此指令与session.save_path
一起使用。
这意味着如果您有多个会话驻留在同一目录中,且生命周期值不同,那么最小生命周期可能会触发垃圾收集器清理这些会话。这是因为gc不会根据其不同的配置来区分会话,而是基于哪个会话在特定存储路径上触发gc(然后,无论,所有超过TTL的文件都被清除)
因此,只需将您想要拥有不同生命周期的会话放在不同的目录中,方法是为它们提供与您通常希望持续较短时间的默认会话不同的session.save_path
。