设置session时间 php,php中实现精确设置session过期时间的方法
设置session时间 php,php中实现精确设置session过期时间的方法
这篇文章主要介绍了php中实现精确设置过期时间的方法,需要的朋友可以参考下
大多数据情况下我们对于过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下过期时间。
对此,可以在PHP中,设置php.ini,找到. = 1440 #(PHP5默认24分钟)这里你可以随便设置一下过期时间.但是有人说设置以后,好象不起作用!
其实不是不起作用,而是因为系统默认:
. = 1
. = 1000
有个概率的,1/1000就是 1000次才有一次被回收。只要你的访问量大了,那就能达到回收的效果.
或者你也可以设置一下. 的值,
比如:. = 1,这样就能明显的看到过期的效果了.
我们最常用的是在php程序中设置,如下例程序所示:
if(!isset($
''
)||(time()-$
''
)>60)
$
''
= time();
这样就搞定了,如果要设置已过期的话也可以在程序中实现:
unset($
''
);// 或 $
''
='';
有过期的机制:
. 原来 过期是一个小概率的事件,分别使用.和. 来确定运行 中gc 的概率 .和.的默认值分别为 1和100。分别为分子和分母 所以中gc的概率运行机会为1% 。如果修改这两个值,则会降低php的效率。所以这种方法是不对的!!
因此设置session时间 php,php中实现精确设置session过期时间的方法,修改php.ini文件中的变量就可以延长的过期时间了:(例如,我们把过期时间修改为86400秒)
. = 86400
然后,重启你的web服务(一般是)就可以了。
“回收”何时发生:
默认情况下,每一次php请求,就会有1/100的概率发生回收,所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的
#概率是/
. = 1
. = 100
注意1:假设这种情况=120,如果某个文件最后修改时间是120秒之前,那么在下一次回收(1/100的概率)发生前,这个仍然是有效的。
注意2:如果你的使用.中使用别的地方保存,回收机制有可能不会自动处理过期文件。这时需要定时手动(或者)的删除过期的:
cd /path/to/; find -cmin +24 | xargs rm
PHP中的永不过期
不修改程序是最好的方法了,因为如果修改程序,测试部一定非常郁闷,那么只能修改系统环境配置,其实很 简单,打开php.ini设置文件,修改三行如下:
1、.
把这个的值设置为1,利用来传递
2、.
这个代表在客户端储存的时间,默认是0,代表浏览器一关闭就作废……就是因为这个所以PHP的 不能永久使用! 那么我们把它设置为一个我们认为很大的数字吧,怎么样,可以的!就这样。
3、.
这个是数据在服务器端储存的时间,如果超过这个时间,那么数据就自动删除! 那么我们也把它设置为。
就这样一切ok了,当然你不相信的话就测试一下看看——设置一个值过个10天半个月的回来看看,如果你的电脑没有断电或者宕机,你仍然可以看见这个。
当然也可能你没有控制服务器的权限并不能像我一样幸运的可以修改php.ini设置,一切依靠我们自己也是有办法的,当然就必须利用到客户端存储 了设置session时间 php,php中实现精确设置session过期时间的方法,把得到的存储到客户端的里面,设置这个的值,然后把这个值传递给()这 个函数,具体做法如下:
(); // 启动
$
'count'
; // 注册变量Count
isset($)?($):$ = ();
// 如果设置了$,就将赋值为$,否则生成
$
'count'
++; // 变量count加1
('', $, time()+); // 储存到中
echo $count; // 显示变量count的值
失效不传递
我们先写个php文件:=()?>, 传到服务器去看看服务器的参数配置。
转到部分,看到.参数被设为了零。
这个参数指定了是否启用透明SID支持,即是否随着URL传递。我个人的理解是,一旦这个参数被设为0,那么每个URL都会启一个。这样后面页面就无法追踪得到前面一个页面的php session 过期设置,也就是我们所说的无法传递。两个页面在服务器端生成了两个文件,且无关联。(此处精确原理有待确认)
所以一个办法是在配置文件php.ini里把.的值改成1。
当然我们知道,不是谁都有权限去改php的配置的,那么还有什么间接的解决办法呢?
下面就用两个实例来说明:
文件1 test1.php
//表明是使用用户ID为标识的
(SID);
//启动
();
//将的name赋值为Havi
$
'name'
=”Havi”;
//输出,并设置超链接到第二页test2.php
echo “”.$
'name'
.””;
文件2: test2.php
表明是使用用户ID为标识的
(SID);
//启动
();
//输出test1.php中传递的。
echo “This is “.$
'name'
所以,重点是在();前加上(SID);,这样页面转换时php session 过期设置,服务器使用的是用户保存在服务器文件夹里的,解决了传递的问题。
不过有朋友会反映说,这样一来,多个用户的写在一个SID里了,那的价值就发挥不出来了。所以还有一招来解决此问题,不用加(SID);前提是你对服务器的php.ini有配置的权限:
改成ON,道理就不表了。
第二个可能的原因是对服务器保存的文件夹没有读取的权限,还是回到.php中,查看保存的地址:
.: var/tmp
所以就是检查下var/tmp文件夹是否可写。
写一个文件:test3.php来测试一下:
echo (((“.”)));
如果返回bool(false),证明文件夹写权限被限制了,那就换个文件夹咯php session 过期设置,在你编写的网页里加入:
//设置当前目录下子文件夹为保存路径。
$ = ().'//';
//如果新路径可读可写(可通过FTP上变更文件夹属性为777实现),则让该路径生效。
if(($) && ($))
($);
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » 设置session时间 php,php中实现精确设置session过期时间的方法
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码