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

2023-05-16

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

一、session文件是什么

文件一般为 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174If

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

二、session回收何时发生

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

#概率是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, 修改或添加下面一行:

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

四、session清除脚本

#!/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


mount -a   

2、创建session存储文件夹

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


#!/bin/sh
dir="0 1 2 3 4 5 6 7 8 9 a b c d e f"
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 root:webgrp /tmp/sessions && chmod -R 1777 /tmp/sessions  

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

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

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


session.save_path = "3;/tmp/sessions  

4、session的回收

使用上面的脚本即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Python3基础入门自学教程

    版权地址 xff1a https www wistbean com pyth pick up Python 给大家说一下 xff0c 我要开始学习 Python 了 xff0c Python 最近很火嘛 xff08 小样 xff0c 别太膨
  • Python提取json数据

    import json jsonstring 61 39 34 user man 34 34 name 34 34 Peter 34 34 name 34 34 xiaoming 34 34 user woman 34 34 name 34
  • Error:Too many parameters found at '^' position.

    SW1 Eth Trunk1 dis th interface Eth Trunk1 mode lacp static max active linknumber 2 return SW1 Eth Trunk1 SW1 GigabitEth
  • 解决docker-compose 命令不存在、未找到命令错误

    1 安装扩展源 sudo yum y install epel release 2 安装python pip模块 sudo yum install python pip 3 查看docker compose版本 docker compose
  • 团队项目中应如何评价个人对团队的贡献?

    这是一个非常有用的问题 如果不仔细思考这个问题 xff0c 就会造成团队成员的不公平 积极性不高等问题 Shine团队的队员们 xff0c 可以在这篇随笔里畅所欲言 xff0c 我先来 xff1a 王安然 xff1a 对于一个项目来说 xf
  • Hash算法初见

    hash算法 hashmap 实现原理 Hash xff0c 一般翻译做 散列 xff0c 也有直接音译为 哈希 的 xff0c 就是把任意长度的输入 xff08 又叫做预映射 xff0c pre image xff09 xff0c 通过散
  • JS学习笔记

    1 空值 xff1a null xff0c undefined NaN Not a Number e g var bestAge 61 null null var currentCount undefined NaN 作比较时 xff0c
  • linux下C语言socket网络编程简例

    转自 http blog csdn net kikilizhm article details 7858405 这里给出在linux下的简单socket网络编程的实例 xff0c 使用tcp协议进行通信 xff0c 服务端进行监听 xff0
  • linux下ffmpeg的使用方法

    格式转换 将file avi 转换成output flv C代码 ffmpeg i file avi output flv i 表示输入文件 现在有个视频video avi xff0c 有个音频 audio mp3 xff0c 将其合并成o
  • linux ssh登录 Permission denied (publickey)

    可能的原因 xff1a Linux上ssh服务没有开密码登录 目前发现两种解决方案 xff1a 打开密码登录 执行sudo vim etc ssh sshd config 找到PasswordAuthentication一项 xff0c 将
  • c语言:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。...

    输入一行字符 xff0c 分别统计出其中英文字母 空格 数字和其他字符的个数 解 xff1a 程序 xff1a include lt stdio h gt int main char c int letters 61 0 space 61
  • ubuntu上网慢解决方案-配置dns

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在ubuntu下用firefox等浏览器上网 往往比在windows下上网要慢好多 但细心的人会发现 慢的时间是花在DNS查找上面了 那么我们可以在本机缓存DNS 也就是在
  • c51按键控制灯亮汇编语言,用一个按键控制LED灯亮/暗的汇编程序

    今天又搞了一个小汇编 xff0c 是用一个按键控制LED灯亮 暗的汇编程序 程序编好后 xff0c 开始编译 xff0c 发现又是通不过 xff0c 找了好几遍也没找到原因 xff0c 后来找枫雪大哥看了 xff0c 才找出原因 xff0c
  • 如何使用linux程序mdadm创建软件RAID1软阵列

    如何使用linux程序mdadm创建软件RAID1软阵列 磁盘冗余阵列 RAID 是将多个物理磁盘结合成一个逻辑磁盘的技术 xff0c 该技术可以提高磁盘容错性能 xff0c 提高磁盘的读写速度 根据数据存储的排列 如 xff1a 条带存储
  • 极乐净土----Android实现图片转ascii码字符图的一些尝试

    掘金第一篇 xff0c 先转一个自己以前的帖子吧 xff0c 懒得重新写了 www jianshu com p 357af674a 转载于 https juejin im post 5c36df2cf265da616624abc6
  • idea中使用FindBugs-IDEA插件

    下载 安装 重启idea即可 xff1b 项目右键或者文件右键即可看到 FindBugs 选项 选择某个选项直接检测即可 检测结果如下图 xff1a 这里的Correctness是重点关注对象 这里面的错误往往是比较严重的 像空指针之类的错
  • pip,virtualenv,conda和anaconda的个人理解

    1 pip pip是python下的包管理工具 xff0c 主要用于从pypi下载所需的python包 xff0c 但是pip不会自动处理包之间的依赖关系 xff1b 在使用pip安装包时 xff0c 可以修改安装源为https pypi
  • Windows Server 2016-Hyper-V网络虚拟化概述

    在 Windows Server 2016 和虚拟机管理器中 xff0c Microsoft 提供的端到端网络虚拟化解决方案 有构成了 Microsoft 的网络虚拟化解决方案的五个主要组件 xff1a Windows Azure Wind
  • mac环境下安装pysvn

    可以从下载页下载对应版本的pysvn xff1a https pysvn sourceforge io downloads html 之后双击打开安装即可 xff0c 不需要再用pip安装 需要注意的是 xff0c 如果安装时提示chdir
  • 关于PHP中Session文件过多的问题

    PHP的默认机制 xff1a 每一次php请求 xff0c 会有1 100的概率 xff08 默认值 xff09 触发 session回收 如果 session回收 发生 xff0c 那就会检查 tmp sess 的文件 xff0c 如果最