php启动 大量sess文件,关于PHP中Session文件过多的有关问题
关于PHP中Session文件过多的问题
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发“session回收”。如果“session回收”发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效
一、session文件是什么
文件一般为 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174Ifusername|s:9:"test";admin|s:1:"0";
二、session回收何时发生
默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的#概率是gc_probability/gc_divisorsession.gc_probability = 1session.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/shfind /tmp/php-session -cmin +24 -name "sess_*" -and -size 0 -delete > /dev/null 2>&1find /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 0mount -a
2、创建session存储文件夹
php并不会自动去创建这些文件夹,不过在源文件中提供了一些创建文件夹的脚本。下面这个脚本也好用,脚本内容如下#!/bin/shdir="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;donechown -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的回收
使用上面的脚本即可
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
php启动 大量sess文件,关于PHP中Session文件过多的有关问题相关推荐
- php启动 大量sess文件,关于PHP中Session文件过多的问题
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...
- php获取目录文件 排序输出,php实现对文件夹目录中的文件进行排序的方法
php实现对文件夹目录中的文件按照时间.名称.大小进行排序的方法 函数介绍: opendir() 函数打开目录句柄. readdir() 函数返回目录中下一个文件的文件名. array_multiso ...
- c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法
作者:小小程序员 链接:https://zhuanlan.zhihu.com/p/91277888 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Python 中有 ...
- 关于PHP中Session文件过多的问题
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...
- java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...
- php session位置,关于PHP中Session文件过多的问题及session文件保存位置
PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的 ...
- 计算机里面的文件打不开,exe是什么文件?电脑中exe文件打不开的原因及解决方法...
在电脑中,.exe是比较常见的文件格式,但是很多朋友不知道exe是什么文件,接下来这篇文章就将为大家介绍,并且还会附带exe文件打不开的解决方法,希望对大家有所帮助. 1."EXE File ...
- c51语言的标准库函的头文件,C51编程中头文件的使用
头文件在C51的编程中是不可缺少的部分.本文将对keil C中常用头文件予以说明,并就如何编写头文件进行初步介绍. 一.C51常见本征函数库 一些常见的头文件都是keil C自带的,在安装目录下的C5 ...
- php 语言文件操作,php中目录文件操作详谈
php中目录文件操作详谈 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,以下是小编整理的php中目录,文件操作详谈,欢迎来 ...
最新文章
- JavaScript toFixed() 方法
- Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效
- Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天
- MySQL 数据库时区设置方法,“The server time zone value ‘�й���ʱ��‘ is unrecognized or represents ...” 问题解决
- 《Groovy语言规范》-语法(三)
- 最短路径——迪杰斯特拉算法——图的数据结构
- 2017.4.5 假期的宿舍 思考记录
- Linux chapter 7
- Vivado18.3的安装 安装教程
- java中,参数后面跟三个点(...)的含义
- b站谈服务器崩溃后其他站点,B站服务器崩溃后,蒙古上单和陈睿一起上了热搜...
- 用opencv将左右眼3D图片转换为红蓝3D图片
- 计算机相关期刊阅读,计算机领域的所有SCI一区期刊,这是最顶级期刊了.doc
- 知识图谱问答 | (3) 关系分类概述
- 华为RH2288H V3服务器更换内存条
- 方法被重写时的调用问题
- 中文文本纠错任务简介
- CMD命令批量抽取指定文件夹下所有文件路径
- 干货|“区块链+物联网”的发展现状和应用案例
- 帆软认证报表工程师(FCRA)考试考题(我的错题记录)