Debian based systems Session killed at 30 minutes in special cron, how to override?(基于Debian的系统会话在特殊cron中30分钟被杀死,如何覆盖?)
问题描述
一直在拔头发,试图找出为什么我的会话在 30 分钟时被终止/杀死/破坏.好吧,看起来基于 Debian 的系统运行了一个特殊的 cron,它会忽略所有 php.ini 和 apache 配置,并在 30 分钟后终止任何空闲会话.
Have been pulling out my hair trying to find out why my sessions are being terminated/killed/destroyed at 30 minutes. Well it looks like Debian based systems have a special cron running that ignores all php.ini and apache configurations and kills any idle session at 30 minutes.
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 小时会很好,但我想了解这些变化,所以如果更高层的人想让会话时间更短/更长,我会记录如何配置更改.
I'm not bad at configuring and setting up hosts but I'm no sysAdmin. Could someone please help me override/edit/change/reconfigure this so I can set the value longer? I think 3 hours would be nice but I would like to understand the changes so if someone higher up wants to make the session time shorter/longer I con document how to configure the change.
感谢任何对此的洞察帮助
Thanks to any insight help on this
添加/usr/lib/php5/maxlifetime 代码
Adding /usr/lib/php5/maxlifetime code
#!/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 分钟)进行比较.
so it looks to be searching all the php.ini files, finds the greatest value, compares it to 1440 (which is 24 minutes).
这里是 php.ini 文件
Here are the php.ini files
/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
但为什么我的脚本会话在 30 分钟而不是 24 分钟被终止?
but why does my script session get killed at 30 minutes and not 24 minutes?
编辑#2:CRON 每 30 分钟运行一次,这就是会话看起来以 30 分钟间隔被终止的原因.但也可能是 24 到 54 分钟,仅供参考
EDIT #2: CRON running every 30 minutes is why the session looks to be killed at 30 minute intervals. But it could also be 24 to 54 minutes, FYI
同时查看以下代码:/usr/lib/php5/maxlifetime
它取最高值,在我的测试过程中,我试图降低阈值以加快条件.
Also looking over the code in: /usr/lib/php5/maxlifetime
it's taking the highest value and during my testing I was trying to lower the threshold to speed up the condition.
看起来我只需要在 php.ini 文件上增加一个到一个多小时的测试测试.
Looks like I just need to increase one on the php.ini files to over one hour test test.
推荐答案
编辑文件/usr/lib/php5/maxlifetime
该值应以秒为单位.这个文件实际上也会检查你的 php.ini,所以我不知道为什么它不适合你.
The value should be in seconds. This file will actually also check your php.ini so I don't know why it wasn't working for you.
这篇关于基于Debian的系统会话在特殊cron中30分钟被杀死,如何覆盖?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:基于Debian的系统会话在特殊cron中30分钟被杀死,如何覆盖?
基础教程推荐
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01