注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天朝布衣田中码农参上

苦逼码农的点点滴滴,请多多指教!

 
 
 

日志

 
 
 
 

PHP有关Session生存时间设置问题  

2017-05-05 10:35:00|  分类: PHP |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
PHP中的Session有效期默认是1440秒(24分钟)【注:php5里默认是180分钟】,也就是说,一般情况下,客户端超过24分钟没有任何刷新,当前Session就会失效。很明显,这种生存时间针对某些网站是绝对不能满足需要的。而业内常用的办法是,使用session_set_save_handler函数【自PHP 5.4 开始】来把Session信息存储到数据库【一般是用内存临时表】,定时通过SQL语句来删除所有过期的Session,以便精确地控制Session的有效期【且可以多台服务器共享Session】。但是,一般的小网站,似乎没有必要这么大材小用。
众所周知,Session其实是储存在服务器端,SessionID可以使用客户端的Cookie或者Http协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器再去读取 Session的目录获取内容……而PHP的GC进程会按照session.gc_probability/session.gc_divisor机率启动,扫描session.save_path目录中的Session文件,并删除过期的。
在了解原理后,再来看看php.ini有相关Session的设置(在“[Session]”部分):
1)session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递【这里需要设置session.use_trans_sid = 1】;
2)session.name:这个就是SessionID储存的变量名称,可自定义,默认值是“PHPSESSID”;
3)session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……
4)session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!
5)session.save_path:这个参数决定Session保存在那个目录,默认是在/tmp
6)session.gc_probability ,session.gc_divisor  两者相除为PHP的GC进程启动机率,如果session.gc_probability设置成0,即永不启动GC进程【虽然可以说是永久保存了过期的Session文件,但服务器空间有限,这种方法肯定不可取】
还有很多其它设置,不过跟Session生存时间相关的就是这些了。如果想要自行设置Session生存时间,那么就可以按照如下处理:
a)把“session.use_cookies”设置为1,一般不用修改【如果没权限修改php.ini,就用@ini_set()函数】;
b)把“session.cookie_lifetime”改为你想设定的生存时间(也可是类似于999999999这样近乎正无穷来一直保存Session)【如果没权限修改php.ini,就用@ini_set()函数】;
c)把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的【如果没权限修改php.ini,就用@ini_set()函数】
d)在程序中利用session_save_path()函数把保存session的目录指向一个专用的目录,跟同一台机器上的其它网站Session相分离,免得PHP启动GC误删除session文件。
e)调整合适的session.gc_probability参数,来启动GC【如果设成100,那么对服务器性能有造成严重的影响】。
这样,Session生存时间就可以自定义了,大家也不妨试试看。

  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017