当前位置: 首页 > news >正文

上海市网站开发汉网网站建设

上海市网站开发,汉网网站建设,长沙网络营销 公司,wordpress 生成gifhttps://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎自动调用 ... 只能你手工去调用 ... php 内部存在着清理 session 的机制 ... 但与这个函数完全无关 ... 如果你想问的是什么时候该手工调用这个…https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎自动调用 ... 只能你手工去调用 ... php 内部存在着清理 session 的机制 ... 但与这个函数完全无关 ... 如果你想问的是什么时候该手工调用这个函数 ...答案就是在你想完全清理掉当前 session 的时候 ... 问题里面提及的几种情况 ... 不管是关闭网页也好 ... 关闭浏览器也罢 ... 甚至你把浏览器删掉重装了 ... 都不会影响到已经生成的 session ... 一言以蔽之 ... 所有浏览器行为都不会导致 session 被自动销毁 ... 那么 ... php 到底是如何清理 session 的呢 ..? 仔细去读 php.ini ... 你可以发现如下几行 ... ; Defines the probability that the garbage collection process is started ; on every session initialization. The probability is calculated by using ; gc_probability/gc_divisor. Where session.gc_probability is the numerator ; and gc_divisor is the denominator in the equation. Setting this value to 1 ; when the session.gc_divisor value is 100 will give you approximately a 1% ; chance the gc will run on any give request. ; Default Value: 1 ; Development Value: 1 ; Production Value: 1 ; http://php.net/session.gc-probability session.gc_probability 1 ; Defines the probability that the garbage collection process is started ; on every session initialization. The probability is calculated by using ; the following equation: gc_probability/gc_divisor. Where session.gc_probability ; is the numerator and session.gc_divisor is the denominator in the equation. ; Setting this value to 1 when the session.gc_divisor value is 100 will give you ; approximately a 1% chance the gc will run on any give request. Increasing this ; value to 1000 will give you a 0.1% chance the gc will run on any give request. ; For high volume production servers, this is a more efficient approach. ; Default Value: 100 ; Development Value: 1000 ; Production Value: 1000 ; http://php.net/session.gc-divisor session.gc_divisor 1000 ; After this number of seconds, stored data will be seen as garbage and ; cleaned up by the garbage collection process. ; http://php.net/session.gc-maxlifetime session.gc_maxlifetime 1440 其实英文的注释已经说得很明白了 ... 但如果你不想看 ... 我也可以解释给你听 ... 由于 php 的工作机制 ... 它本身不会提供 daemon 来定时扫描 session 信息并判断其是否失效 ... 当你每次调用 session_start() 时 ... php 会根据 session.gc_probability 和 session.gc_divisor 来决定是否启用 Garbage Collector ... Garbage Collector 顾名思义 ... 被叫做 垃圾回收器 ... 也就是俗称的 GC ... 具体一些讲 ... 在我刚刚贴的配置文件里 ... session.gc_probability 1 session.gc_divisor 1000就是说 php 会有千分之一的概率会启动垃圾回收 ... 而垃圾回收的工作就是在 session 存储路径 session.save_path 下扫描所有存在的 session ... 然后用当前时间减去每个 session 的最后修改时间再跟 session.gc_maxlifetime 参数进行比较 ... 如果某个 session 的生存时间超过了 session.gc_maxlifetime 的设定值就把它销毁掉 ... 事实上这个过程完全是 php 引擎的行为 ... 和你的程序无关 ... 和用户做了什么也无关 ... 用户关闭浏览器再开 ... 因为 cookie 失效他会获得一个新的 session ... 但这并不代表他原来的 session 就被销毁了 ... 那个 session 依然在服务器上存在 ... 如果他手动把名字等于 session.name 的那个 cookie 的值改回之前的 session_id() ... 还是可以重新获得之前的那个 session 的 ... 另外一种情况 ... 如果一个用户获得 session 之后长时间没有任何动作 ... 他就可能因为其他用户触发了垃圾回收而丢失掉自己的 session ... 大体来说就是如此 ... 更加细节的东西 ... 你可以参考 php 手册上 关于垃圾回收的章节 ... 恩 ... 就是这样啦 ... //------------------------------------------------------------------------------- 深入理解session过期机制 首先得明白session的过期时间由两方面决定的; 1存储在客户端的$_COOKIE[PHPSESSID]的过期时间默认cookie名称为PHPSESSID,可通过php.ini中的session.name修改。 2.存储在服务器端的相对应的session文件session文件名和上述cookie的值一一对应默认为1440秒即24分钟 ok现在详细阐述上述两者的关系 当执行session_start()的时候其实是做了两件事 1检查客户端发送过来的的所有cookie当然也包括$_COOKIE[PHPSESSID], 如果有的话根据$_COOKIE[PHPSESSID]的值这是由apache产生的随机字符串如0lkbd2se458r600m2m7o1r4ic5来访问 相对应的 session文件如sess_0lkbd2se458r600m2m7o1r4ic5我的默认存储在‘E:\wamp\tmp’下这两者是一 一对应的关系。打个比喻$_COOKIE[PHPSESSID]就是一把开启宝盒的钥匙而那个宝盒就是session文件里面存储着用户的重要 信息也就是session的值 如$_SESSION[uid]1,$_SESSION[username]name,$_SESSION[pwd]pwd, 当然文件里面的值是经过序列化的。 2如果客户端没有传来$_COOKIE[PHPSESSID]就会有服务端产生一个随机的$_COOKIE[PHPSESSID]并存储在客户端。 明白上面这些我们可以通过下面的方法修改session的过期时间 1.session_set_cookie_params(50);//修改$_COOKIE[PHPSESSID],的生存时间为50秒 或者可以这样 setcookie(session_name(),session_id(),time()50); 2.ini_set(session.gc_maxlifetime,50);//设置session文件的有效时间为50秒 但是可能有些朋友会做这样 一个试验 在50秒内获取$_COOKIE[PHPSESSID]的值并记录下来如黑客截获这个cookie这样等50秒过后发现原先 的$_COOKIE[PHPSESSID]值确实不存在了而出现了一个新的$_COOKIE[PHPSESSID]但是‘E:\wamp \tmp’下的旧session文件却没有消失默认只有1/1000的概率会消失应该不会碰到吧呵呵这是为什么呢我不是已经设置了.ini_set(session.gc_maxlifetime,50);了 吗再做一个实验这时你伪造一个$_COOKIE[PHPSESSID],值为刚才你记录下的神奇的事发生了你依然可以访问刚才旧的 session文件虽然他已经过期只要这个文件没被删除用相对应得$_COOKIE[PHPSESSID]依然可以进行访问 那我们设置ini_set(session.gc_maxlifetime, 50);还有什么意义呢这就涉及的GCGarbageCollector的回收机制。 默 认情况下session.gc_probability 1session.gc_divisor1000也就是说有1/1000的可能性会启动GC。GC的工作就是扫描所有的session信息用当 前时间减去session的最后修改时间modifieddate同session.gc_maxlifetime参数进行比较如果生存时间已经 超过gc_maxlifetime就把该session删除。只要没有启动GC即使session过期也仍旧可通过相对应 得$_COOKIE[PHPSESSID]进行访问    原文参考 http://www.jb51.net/article/26890.htm                  http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/0621/10583.html转载于:https://www.cnblogs.com/jukan/p/5431384.html
http://wiki.neutronadmin.com/news/172173/

相关文章:

  • 做网站的用多少钱西安营销型网站制作
  • 怎样在百度做网站官方商城下载
  • 网站运营与网络推广方案wordpress仿腾讯
  • php网站开发岗位要求asp.net网站开发期末复习题
  • 咖啡厅网站开发目标做国外网站需要多少钱
  • 网站建设 图片问题网站策划方案800字
  • 华容网站做网站美工收费
  • 增加网站收录杭州网站制作方法
  • 商城型企业网站的功能wordpress转移域名
  • 深圳网站建设报价网站开发非常之旅:ajax从入门到精通 pdf
  • 湖南网站建设小公司wordpress网络报名系统
  • 建设电商网站需要什么硬件佛山网站建设找哪家
  • 设计网站如何推广网站的数据库怎么备份
  • 做网站一般多少盗版视频网站怎么做
  • 网站域名的作用搞外贸一般是干什么的
  • 一站式网站建设顾问男科医院网站开发策划
  • 如何创建自己的网站链接已有网站备案更换idc 多久
  • 网站做404是什么意思如何做网站访问量的统计
  • 一般做个网站要多少钱站长查询站长工具
  • 公司内部网站的作用网站建设需求信息
  • 邢台外贸网站建设做一个网站的完整教程
  • 企业网站建设中图片优化的方法网站版面布局设计的原则
  • apmserv访问本地网站国外门户网站设计
  • ssc网站开发建网站哪家划算
  • 电邮注册网站企业宽带解决方案
  • 成都市建设招标网站免费的设计软件有哪些
  • 往建设厅网站上传东西wordpress页眉显示购物车
  • 国际旅游网站设计报告网站二级分类
  • 网站文案案例天元建设集团有限公司咋样
  • 成都专业做网站的公司有哪些武威建设局网站