gpt4 book ai didi

php 手动 session.gc_maxlifetime 在 Linux (Debian,Ubuntu) 下被忽略。如何设置备选?

转载 作者:行者123 更新时间:2023-12-04 14:41:27 24 4
gpt4 key购买 nike

我的问题很快就被描述为需要在不更改 php.ini 的情况下将 session 数据生命周期延长到 php.ini 中的默认设置。我正在寻找一种可以应用于跨服务器平台的许多不同 php 设置的解决方案,因此无需为每次安装更改脚本。

由于我不想更改我的服务器上的默认值并希望尽可能独立于我的脚本我正在寻找一种方法来超过为垃圾收集器设置的默认 1440 秒以处理我的 session 数据过早。只需设置 ini_set('session.gc_maxlifetime',36000);到 10 小时将不起作用,因为在某些服务器上,GC 将运行不受 php 设置的影响,并且无论如何都会在 24 分钟后删除我的 session ,如所述here .为了解决这个问题,作者建议将 session.save_path 更改为另一个不受操作系统 gc 影响的文件夹,从而将 set session.gc_maxlifetime 强制设置为我的设置。不幸的是,我无法在 php 的 tmp 空间内创建一个临时文件夹,虽然我喜欢,但我似乎做不到,因为我在大多数服务器上没有 0600 访问权限。

一种解决方案是将我的 session 数据链接到我自己的文件夹,该文件夹是在我的共享主机文件夹中创建的,但这似乎不安全,因为该文件夹必须在线可用,因此可能会暴露身份信息被盗的风险。虽然我不知道是不是这样。

另一种解决方案是包含 $_SESSION["stayalaive"]=time(); 因为 gc 只删除在登录脚本的特定时间内未触及的 session ,以便 session 将每次调用登录脚本时都会扩展,但这意味着如果用户在 24 分钟内没有单击任何内容, session 将无论如何都会被删除,这是我可能会接受的,但它似乎也进行了另一个似乎不必要的过程。

所以我的问题是如何设置我的 session 数据以保持事件状态 10 小时而不需要太多的性能。

最佳答案

我之前在脚本中使用过 php.ini 指令,除此之外,您还可以在托管保留空间内创建目录。

所以(在你的脚本的最开始)这一定是可行的,毫无疑问:

<?php

// obtain current directory
$APPPATH = dirname(__FILE__);

if ( ! file_exists($APPPATH . '/tmp/sessions'))
{
mkdir($APPPATH . '/tmp/sessions', 0700, TRUE);
}

ini_set('session.save_path', $APPPATH . '/tmp/sessions');
ini_set('session.gc_maxlifetime', 36000);
session_start();

?>

两个指令都有 PHP_INI_ALL changeable mode , 所以可以在脚本中设置。

关于php 手动 session.gc_maxlifetime 在 Linux (Debian,Ubuntu) 下被忽略。如何设置备选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com