仓酷云
标题:
PHP网站制作之若何设置一个严厉30分钟过时的Session
[打印本页]
作者:
小魔女
时间:
2015-2-3 23:32
标题:
PHP网站制作之若何设置一个严厉30分钟过时的Session
终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 我在面试的时分, 常常会问一个成绩: “若何设置一个30分钟过时的Session?”, 人人不要感觉看似复杂, 这外面包括的常识挺多, 出格合适考查根基功是不是扎实, 谁往返答尝尝? 呵呵
为何问这个成绩呢? 1. 我在Twitter上看到了有人会商这个成绩, 2 想起来我常常问这个成绩, 所以~~
在这里, 我来解答下这个标题.
第一种回覆
那末, 最多见的一种回覆是: 设置Session的过时工夫, 也就是session.gc_maxlifetime, 这类回覆是不准确的, 缘由以下:
1. 起首, 这个PHP是用必定的几率来运转session的gc的, 也就是session.gc_probability和session.gc_divisor(引见参看 深切了解PHP道理之Session Gc的一个小几率Notice), 这个默许的值分离是1和100, 也就是有1%的时机, PHP会在一个Session启动时, 运转Session gc. 不克不及包管到30分钟的时分必定会过时.
2. 那设置一个也许率的清算时机呢? 仍是不当, 为何? 由于PHP利用stat Session文件的修正工夫来判别是不是过时, 假如增大这个几率一来会下降功能, 二来, PHP利用”一个”文件来保留和一个会话相干的Session变量, 假定我5分钟前设置了一个a=1的Session变量, 5分钟后又设置了一个b=2的Seesion变量, 那末这个Session文件的修正工夫为添加b时辰的工夫, 那末a就不克不及在30分钟的时分, 被清算了. 别的还有上面第三个缘由.
3. PHP默许的(Linux为例), 是利用/tmp 作为Session的默许存储目次, 而且手册中也有以下的描写:
Note: 假如分歧的剧本具有分歧的 session.gc_maxlifetime 数值然而同享了统一个中央存储会话数据,则具有最小数值的剧本会清算数据。此情形下,与 session.save_path 一同利用本指令。
也就是说, 假如有俩个使用都没有指定本人自力的save_path, 一个设置了过时工夫为2分钟(假定为A), 一个设置为30分钟(假定为B), 那末每次当A的Session gc运转的时分, 就会同时删除属于使用B的Session files.
所以, 第一种谜底是不”完整严厉”准确的.
第二种谜底
还有一种罕见的谜底是: 设置Session ID的载体, Cookie的过时工夫, 也就是session.cookie_lifetime. 这类回覆也是不准确的, 缘由以下:
这个过时只是Cookie过时, 换个说法这点就考查Cookie和Session的区分, Session过时是办事器过时, 而Cookie过时是客户端(阅读器)来包管的, 即便你设置了Cookie过时, 这个只能包管尺度阅读器到期的时分, 不会发送这个Cookie(包括着Session ID), 而假如经由过程机关恳求, 仍是可使用这个Session ID的值.
第三种谜底
利用memcache, redis等, okey, 这类谜底是一种准确谜底. 不外, 很明显出题者一定还会接着问你, 假如只是利用PHP呢?
第四种谜底
固然, 面试不是为了岂非你, 而是为了考查思虑的严密性. 在这个过程当中我会提醒出这些圈套, 所以普通来讲, 合适题意的做法是:
1. 设置Cookie过时工夫30分钟, 并设置Session的lifetime也为30分钟.
2. 本人为每个Session值增添Time stamp.
3. 每次会见之前, 判别工夫戳.
最初, 有同窗问, 为何要设置30分钟的过时工夫: 这个, 起首这是为了面试, 第二, 实践利用场景的话, 好比30分钟就过时的优惠?
本文地址: http://www.laruence.com/2012/01/10/2469.html
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,皮皮我的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。
作者:
再现理想
时间:
2015-2-4 01:46
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
不帅
时间:
2015-2-8 14:54
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox 支持的不是很好,所以能少用还是少用的好。
作者:
灵魂腐蚀
时间:
2015-2-10 10:54
本文当是我的笔记啦,遇到的问题随时填充
作者:
兰色精灵
时间:
2015-2-18 19:54
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者:
变相怪杰
时间:
2015-3-6 10:09
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者:
飘灵儿
时间:
2015-3-12 23:58
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者:
乐观
时间:
2015-3-18 10:39
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者:
小妖女
时间:
2015-3-25 15:53
Ps:以上纯属原创,如有雷同,纯属巧合
作者:
老尸
时间:
2015-4-3 13:15
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者:
活着的死人
时间:
2015-4-26 04:10
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者:
透明
时间:
2015-4-26 16:37
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
柔情似水
时间:
2015-5-2 02:35
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者:
精灵巫婆
时间:
2015-5-4 04:01
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者:
再见西城
时间:
2015-6-5 11:48
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者:
若相依
时间:
2015-6-10 19:45
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
作者:
只想知道
时间:
2015-6-17 10:52
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者:
若天明
时间:
2015-6-20 09:35
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者:
爱飞
时间:
2015-7-2 23:47
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线 \\\\\\\'_\\\\\\\' ;
作者:
金色的骷髅
时间:
2015-7-7 04:22
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者:
山那边是海
时间:
2015-7-9 23:58
Ps:以上纯属原创,如有雷同,纯属巧合
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2