PHP SESSION 回收机制
来源:互联网 发布:猛将源代码修改数据 编辑:程序博客网 时间:2024/06/05 09:41
Session回收
通过上文几节介绍,我们知道session数据存放在服务端指定的session.save_path目录中,同时会在用户端存放一条Cookie用以记录分配给用户的session id。所以,session数据失效分服务端和客户端,要删除(回收)的对象也很清楚: 1,服务端:删除过期的session文件,启动PHP GC回收。 2,用户端:使存储了过期session_id的用户端Cookie记录过期。通过将Cookie的Expire设置为负值,要求客户端删除Cookie。 服务端:删除过期的session文件 PHP GC进程被启动以后,则会扫描session.save_path,找出过期的session,并删除该session文件。所谓,过期的 session,是指操作系统当前时间与session文件最后访问时间之差大于session.gc_maxlifetime的话,该session认 为是过期了。注意:有时候,你会发现,即便是文件过期了,有可能也没有被及时地删除掉。这是因为,每次session初始化的时候,并不会都启动PHP GC进程的,启动GC进程会大大降低php的运行效率。所有一个启动概率,这个概率由php.ini设定session.gc_probability / session.gc_divisor二个设置决定,默认概率是1%(1/1000)。这意味着,每1000次用户请求中,会启动1次PHP GC回收session文件
与session回收相关的php.ini设置:
1, session.gc_probability和session.gc_divisor 由 这二个函数决定了启用GC的概率,默认是1/1000。也就是说,每一千次用户请求中有一次会启动GC回收session。启动GC进程不宜过于频繁。上 面的例子,我们可以看到,它会每次检查session.save_path目录下每个文件的状态。这样会降低php的执行效率。
2, session.gc_maxlifetime = 1440 设置session存活时间,单位是秒。每次GC启动后, 会通过stat得到session文件最后访问的unix时间,通过现在时间减去文件最后访问时间之间大于session.gc_maxlifetime,则会删除该文件。
总结
1, PHP使用Cookie的方法传递session id。尽量不要使用GET方法传递session id,因为这样很不安全。
2, 可以通过setcookie()的方法,将客户端的session id的Cookie记录删除。
3, PHP GC进程由session初始化启动。但不是每一次用户请求都会被启动,它的启动概率默认是1/1000。过于频繁访问的网站,并发量大的网站,可减小PHP GC的启动频率。PHP GC回收session会降低php的执行效率。
4, 通过下面代码,优化session回收
- PHP session回收机制
- PHP session回收机制
- PHP session回收机制
- PHP session回收机制
- PHP SESSION 回收机制
- PHP session垃圾回收机制
- PHP session回收机制【转】
- PHP:session垃圾回收机制
- session回收机制
- session垃圾回收机制
- php中session过期时间设置及回收机制详解:
- PHP里session有效时间和回收机制
- PHP的垃圾回收机制及session的销毁原理
- PHP session回收机制及php.ini session生命期gc_maxlifetime配置/gc_maxlifetime无效
- php中Session的生成机制、回收机制和存储机制探究
- php中session过期时间设置及session回收机制介绍
- session的垃圾回收机制
- session的垃圾回收机制
- Jenkins入门系列之 Jenkins安装与配置
- web 端渲染优化指北
- mac os x python安装matplotlib 库 出错: Operation not permitted
- Python中值传递和引用传递区别
- Spark在windows下的安装
- PHP SESSION 回收机制
- tensorflow安装
- C++ Primer之引用
- cmake使用示例
- MFC对话框的picture控件中显示IplImage*格式图像
- 给category增加属性
- Spring IoC
- 操作系统处理机管理功能(1)之进程控制及进程同步
- 非阻塞模式(ioctlsocket)