当前位置:  开发笔记 > 编程语言 > 正文

基于Debian的系统会话在30分钟内在特殊的cron中被杀,如何覆盖?

如何解决《基于Debian的系统会话在30分钟内在特殊的cron中被杀,如何覆盖?》经验,为你挑选了1个好方法。

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

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

我在配置和设置主机方面不错,但我不是sysAdmin.有人可以帮我覆盖/编辑/更改/重新配置这个,这样我可以设置更长的值吗?我认为3个小时会很好,但我想了解这些变化,所以如果有人想要让会话时间更短/更长,我会记录如何配置更改.

感谢有关此的任何见解帮助

编辑:添加/ 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

但为什么我的脚本会话在30分钟而不是24分钟被杀?

编辑#2:CRON每30分钟运行一次,这就是为什么会议看起来每隔30分钟被杀死一次.但也可能是24到54分钟,仅供参考

同时查看代码:/usr/lib/php5/maxlifetime它采用了最高值,在我的测试过程中,我试图降低阈值以加速条件.

看起来我只需要在php.ini文件上增加一个超过一小时的测试测试.



1> Emil Vikströ..:

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

该值应以秒为单位.这个文件实际上也会检查你的php.ini所以我不知道为什么它不适合你.


cron作业仅每30分钟运行一次,因此实际上您的会话有效期为24到54分钟.
推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有