gpt4 book ai didi

php - 基于 Debian 的系统 session 在特殊 cron 中的 30 分钟被杀死,如何覆盖?

转载 作者:可可西里 更新时间:2023-10-31 22:46:01 25 4
gpt4 key购买 nike

一直在拔头发试图找出为什么我的 session 在 30 分钟时被终止/杀死/销毁。好吧,看起来基于 Debian 的系统有一个特殊的 cron 运行,它忽略所有 php.ini 和 apache 配置,并在 30 分钟时终止任何空闲 session 。

cron 路径:/etc/cron.d/php5

在 cron 内部:

# /etc/cron.d/php5: crontab fragment for php5
# This purges session files older than X, where X is defined in seconds
# as the largest value of session.gc_maxlifetime from all your php.ini
# files, or 24 minutes if not defined. See /usr/lib/php5/maxlifetime

# Look for and purge old sessions every 30 minutes
09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -n 200 -r -0 rm

我不擅长配置和设置主机,但我不是系统管理员。有人可以帮我覆盖/编辑/更改/重新配置它以便我可以将值设置得更长吗?我认为 3 小时会很好,但我想了解更改,因此如果更高层的人想要缩短/延长 session 时间,我会记录如何配置更改。

感谢对此的任何见解帮助

编辑:添加/usr/lib/php5/maxlifetime 代码

#!/bin/sh -e

max=1440

for ini in /etc/php5/*/php.ini; do
cur=$(sed -n -e 's/^[[:space:]]*session.gc_maxlifetime[[:space:]]*=[[:space:]]*\([0-9]\+\).*$/\1/p' $ini 2>/dev/null || true);
[ -z "$cur" ] && cur=0
[ "$cur" -gt "$max" ] && max=$cur
done

echo $(($max/60))

exit 0

因此它看起来正在搜索所有 php.ini 文件,找到最大值,将其与 1440(即 24 分钟)进行比较。

这是 php.ini 文件

/etc/php5/apache2/php.ini
session.gc_maxlifetime = 1440

/etc/php5/cgi/php.ini
session.gc_maxlifetime = 1440

/etc/php5/cli/php.ini
session.gc_maxlifetime = 1440

但为什么我的脚本 session 会在 30 分钟而不是 24 分钟时被终止?

编辑#2:CRON 每 30 分钟运行一次,这就是 session 看起来每隔 30 分钟被终止的原因。但也可能是 24 到 54 分钟,仅供引用

同时查看以下代码:/usr/lib/php5/maxlifetime 它采用了最高值,在我的测试期间,我试图降低阈值以加快条件。

看来我只需要在 php.ini 文件上增加一个到一个多小时的测试测试。

最佳答案

编辑文件/usr/lib/php5/maxlifetime

该值应以秒为单位。该文件实际上还会检查您的 php.ini,所以我不知道为什么它对您不起作用。

关于php - 基于 Debian 的系统 session 在特殊 cron 中的 30 分钟被杀死,如何覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3865303/

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