PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发“session回收”。如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效

一、session文件是什么

文件一般为 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174If

1
username|s:9:"test";admin|s:1:"0";

二、session回收何时发生

默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的

1
2
3
#概率是gc_probability/gc_divisor
session.gc_probability = 1
session.gc_divisor = 100

  • 假设这种情况gc_maxlifetime=120,如果某个session文件最后修改时间是120秒之前,那么在下一次回收(1/100的概率)发生前,这个session仍然是有效的。

  • 如果你的session使用session.save_path中使用别的地方保存session,session回收机制有可能不会自动处理过期session文件。这时需要定时手动(或者crontab)的删除过期的session

三、设置session存储目录

使用php5-fpm的话, 修改/etc/php5/fpm/php.ini, 修改或添加下面一行:

1
session.save_path = 3;600:/tmp/sessions

四、session清除脚本

1
2
3
4
#!/bin/sh
find /tmp/php-session -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1
find /tmp/php-session -cmin +1440 -name "sess_*" -delete > /dev/null 2>&1

这里的时间我们可以通过 session.gc_maxlifetime 来获取,放到定时任务里面即可(crontab)

其他方式

  • 使用memcache 等 ,(session.save_handler = memcache)

  • 使用cookie,但是cookie得加密

五、使用tmfs存储session

1、将/tmp挂载为 tmpfs文件系统

修改/etc/fstab,在最后一行添加如下内容:/tmp/sessions tmpfs defaults,size=5120m 0 0

1
mount -a 

2、创建session存储文件夹

php并不会自动去创建这些文件夹,不过在源文件中提供了一些创建文件夹的脚本。下面这个脚本也好用,脚本内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh
dir="0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z"
for levela in $dir;
do
    for levelb in $dir;
    do
        for levelc in $dir;
        do
            mkdir -p /tmp/sessions/$levela/$levelb/$levelc;
        done
    done;
done
chown -R www:www /tmp/sessions && chmod -R 1777 /tmp/sessions

因为/tmp/sessions是用的内存,服务器重启后,里面的所有文件都会丢失,所以,需要把上面的脚本加入到 /etc/rc.local中,并且要放在启动php之前

3、将session存储到不同的目录中

php本身支持session的多级散列,在php.ini中,将 ;session.save_path = /tmp 改为

1
session.save_path = "3;/tmp/sessions"

4、session的回收

使用上面的脚本即可

rm -f /tmp/sess_*

转载于:https://www.cnblogs.com/waw/p/10615487.html

关于PHP中Session文件过多的问题相关推荐

  1. php启动 大量sess文件,关于PHP中Session文件过多的有关问题

    关于PHP中Session文件过多的问题 PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收" ...

  2. php启动 大量sess文件,关于PHP中Session文件过多的问题

    PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...

  3. php session位置,关于PHP中Session文件过多的问题及session文件保存位置

    PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...

  4. Session的原理,大型网站中Session方面应注意什么?

    一.Session和Cookie的区别 Session是在服务器端保持会话数据的一种方法(通常用于pc端网站保持登录状态,手机端通常会使用token方式实现),存储在服务端. Cookie是在客户端保 ...

  5. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题...

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

  6. php 删除 session 文件,如何删除php中的session文件

    如何删除php中的session文件 发布时间:2020-07-23 17:18:57 来源:亿速云 阅读:106 作者:Leah 如何删除php中的session文件?相信很多没有经验的人对此束手无 ...

  7. Hive中数据倾斜和小文件过多的解决方案

    数据倾斜: 任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成.因为其处理的数据量和其他reduce差异过大. 原因:某个reduce的数据 ...

  8. c中session的用法

    c中session的用法你知道吗?下面小编就跟你们详细介绍下c中session的用法,希望对你们有用. c中session的用法如下: Session的基本属性: 一.属性 1.SessionID S ...

  9. session文件无法并发操作

    session_start():打开服务器上的session文件. session_commit():会把$_SESSION数组的内容写入到服务器上的session文件中,但不会清空$_SESSION ...

最新文章

  1. 深度学习到底有哪些卷积?
  2. Javascript Patterns--读书笔记8 (Factory)
  3. 推荐算法炼丹笔记:CTR点击率预估系列入门手册
  4. Volatile关键字的详解
  5. 在同一个机器上布署两个JBOSS,要修改那些端口?
  6. linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题
  7. 数据字典模板_巧用单元格保护功能+字典技术,制作高大上的人员信息录入表...
  8. cmd 笔记(随时补充)
  9. 从 JavaScript 到 TypeScript 6 - Vue 引入 TypeScript
  10. Android Cursor浅析
  11. asp.net 微信小程序源码 微信分销源码 源文件完全开源 源码
  12. 关于未知的USB设备(设备描述符请求失败)的解决方法。
  13. C++实现24点游戏
  14. java 分解质因数
  15. 谷歌统计代码使用方式
  16. 如何选择工业中CCD相机与CMOS相机
  17. android wms各个类的作用,Android系统服务 —— WMS
  18. English语法_不定代词 - 概述
  19. 阿里资深架构师推荐:企业架构理论及其在国内金融业的实践综述
  20. python有道批量单词音标整理-python实现有道翻译(逐行读文本)

热门文章

  1. Mysql元数据分析
  2. [原]五分钟搭建gitserver
  3. ⑤Windows Server 8 RemoteFX体验
  4. 解密为什么八成IT人士愿意跳槽?
  5. 推荐 正则表达式入门教程
  6. Android如何使用so文件和Android studio中导入so
  7. CentOS下安装JDK1.7
  8. Android适应方案汇总(三)
  9. Gson解析json数据 亲自测试可用
  10. 3.8 采购协议管理