我的问题很快被描述为需要在不更改 php.ini 的情况下将会话数据寿命延长到 php.ini 中的默认设置之上。我正在寻找一种可应用于跨服务器平台的多种不同 php 设置的解决方案,因此无需为每次安装更改脚本。
由于我不想更改服务器上的默认设置并希望尽可能地独立使用我的脚本,我正在寻找一种方法来超过为垃圾收集器设置的默认 1440 秒,以便过早地处理我的会话数据。简单地设置ini_set('session.gc_maxlifetime',36000);
为 10 小时将不起作用,因为在某些服务器上,GC 将不受 php 设置的影响运行,并且无论如何都会在 24 分钟后删除我的会话,如此处所述。为了解决这个问题,作者建议将 session.save_path 更改为不受操作系统 gc 影响的另一个文件夹,从而将 set session.gc_maxlifetime 强制设置为我的设置。不幸的是,我无法在 php 的 tmp 空间中创建一个临时文件夹,尽管我喜欢我似乎无法做到,因为我在大多数服务器上都没有 0600 访问权限。
一种解决方案是将我的会话数据链接到在我的共享主机文件夹中创建的我自己的文件夹,但这似乎不安全,因为该文件夹必须在线可用,因此可能会被盗。虽然我不知道是不是这样。
另一个解决方案是包括$_SESSION["stayalaive"]=time();
,因为 gc 仅删除登录脚本在特定时间内未触及的会话,以便每次调用登录脚本时都会扩展会话,但这意味着如果用户在 24 分钟内没有单击任何内容无论如何,会话将被删除,这是我可以忍受的,但它似乎也加入了另一个似乎不必要的过程。
所以我的问题是如何设置我的会话数据以保持活动 10 小时而不会为其提供太多性能。