php配置session相关知识
2013-04-24 22:43
344 查看
>>本文链接地址:php配置session相关知识
php session有一个GC功能,就是Garbage Collector。这个GC启动的时候,会清除那些已经“超时”的session。它的工作原理:
1.用户访问并登陆网站,这时候后台会调用session_start来尝试生成一个会话(如果已经有会话,则相当于一次有效会话请求)
2.对于这样的每一次有效会话请求(Request),apache的php模块会根据session相关的全局变量gc_probability/gc_divisor =>计算出启动GC的概率,并由此概率来决定在这次请求中是否应该启动GC。举例来说,session.gc_probability的缺省值为1,session.gc_divisor的缺省值为100,则启动“垃圾回收”器的概率是1%,这就意味着在每100次请求中,会有可能清理一次过期会话
3.如果GC启动,则GC会扫描当前会话所在路径(session.save_path)下的所有会话文件,并根据另外一个全局变量session.gc_maxlifetime的多少来判断哪些session已经过期(“当前时间”与“会话文件的atime或者mtime”之间的差大于gc_maxlifetime:过期),并删除这些过期的session
4.如果你在一个session启动后,长时间没有任何交互操作(譬如,不停地码字,没有提交或者保存为草稿),那么你的保存在后台的会话文件将得不到机会被修改或者访问,在gc_maxlifetime(缺省值1440秒=24分钟)时间后,它有可能因失效而被清理,这以后你再提交,就会因为会话失效而报错
而关于SESSION 过期大家也应该有更明确的认识
只有session.cookie_lifetime 控制SESSIOn的过期时间.可以通过直接修改ini,或者通过ini_set();以及session_set_cookie_params()来修改。
虽然gc的最大过期时间可能比Session的过期时间短,但是还是按照session的过期时间过期。
注意: WEB是触发式的。所以在你直接关闭IE的情况下,session文件也是依然会存在的。
session默认以文件方式保存,不过太多的session在一个目录下是不利于存取的。php.ini里面有个设置可以让session分子目录保存
session.save_path = “N;/path” N表示几级子目录,比如你可以设置成 session.save_path = “2;/tmp”
但是你设置成分子目录后,原来的garbage collection 就没用了,需要你自己去清楚过期session,比如用个shell定时执行。
php session有一个GC功能,就是Garbage Collector。这个GC启动的时候,会清除那些已经“超时”的session。它的工作原理:
1.用户访问并登陆网站,这时候后台会调用session_start来尝试生成一个会话(如果已经有会话,则相当于一次有效会话请求)
2.对于这样的每一次有效会话请求(Request),apache的php模块会根据session相关的全局变量gc_probability/gc_divisor =>计算出启动GC的概率,并由此概率来决定在这次请求中是否应该启动GC。举例来说,session.gc_probability的缺省值为1,session.gc_divisor的缺省值为100,则启动“垃圾回收”器的概率是1%,这就意味着在每100次请求中,会有可能清理一次过期会话
3.如果GC启动,则GC会扫描当前会话所在路径(session.save_path)下的所有会话文件,并根据另外一个全局变量session.gc_maxlifetime的多少来判断哪些session已经过期(“当前时间”与“会话文件的atime或者mtime”之间的差大于gc_maxlifetime:过期),并删除这些过期的session
4.如果你在一个session启动后,长时间没有任何交互操作(譬如,不停地码字,没有提交或者保存为草稿),那么你的保存在后台的会话文件将得不到机会被修改或者访问,在gc_maxlifetime(缺省值1440秒=24分钟)时间后,它有可能因失效而被清理,这以后你再提交,就会因为会话失效而报错
而关于SESSION 过期大家也应该有更明确的认识
只有session.cookie_lifetime 控制SESSIOn的过期时间.可以通过直接修改ini,或者通过ini_set();以及session_set_cookie_params()来修改。
虽然gc的最大过期时间可能比Session的过期时间短,但是还是按照session的过期时间过期。
注意: WEB是触发式的。所以在你直接关闭IE的情况下,session文件也是依然会存在的。
session默认以文件方式保存,不过太多的session在一个目录下是不利于存取的。php.ini里面有个设置可以让session分子目录保存
session.save_path = “N;/path” N表示几级子目录,比如你可以设置成 session.save_path = “2;/tmp”
但是你设置成分子目录后,原来的garbage collection 就没用了,需要你自己去清楚过期session,比如用个shell定时执行。
相关文章推荐
- php相关配置及相关基础知识点
- php.ini中session相关配置详解
- php.ini与cookie/session相关配置
- 谈谈关于PHP的代码安全相关的一些致命知识
- 三、PHP知识核心 运行基本环境配置与设定
- PHP基础知识(四)——Cookie、Session
- 优化交换机端口配置--开启CATOS的快速启动属性以及相关知识关联
- php递归函数相关知识
- PHP-FPM运行原理以及相关配置
- PHP安全相关的配置(2)
- 织梦dede:php标签中调用其他普通标签和页面相关变量及全局配置的变量
- windows环境下memcache相关配置及PHP加载相应模块(php7版本)
- PHP之Session配置文件存储路径
- php session配置的注释,以及思考
- session相关知识
- Laravel下数据库连接相关问题:env配置,database.php配置,php artisan migrant
- php开发和调试环境的配置+出现 57% waiting for xdebug session的问题
- tomcat,myeclipse相关知识(配置服务器)
- PHP基础知识 - session和cookie的区别
- PHP学习(wampServer+PhpStorm+XDebug)——环境相关配置参考(下)