PHP什么是会话作业,PHP会话(Session)使用入门

# re: PHP会话(Session)使用入门

2007-11-06 23:32 | 鱼有所思

关于Session中的session.gc_*

关于 liufei2222 同学

关于登录超时,自动退出页面的问题!

引用:

我的做法是: 通过Session 控制

失败1:在 php.ini 中设定 session 失效的时间,我设置session.gc_maxlifetime为180,可是我等了足足5分钟(可能有8分钟),可是我依然能进入系统.设置后有重启linux.

失败2:在 程序中插入函数 ini_set('session.gc_maxlifetime',180);(session_start前加入),超时后依然能进入.

请问:该怎么做?

一开始我也不是很明白,想当然的以为这个是用来控制Session文件的.这里设置的时间,过期后,/tmp/sess_*的文件就会自动删除.

后来自己做了一下测试好象也不行.

看文档发现,在session的configure option中有三个关于gc的,分别是:

session.gc_probability "1" PHP_INI_ALL

session.gc_divisor "100" PHP_INI_ALL Available since PHP 4.3.2.

session.gc_maxlifetime "1440" PHP_INI_ALL

咱们一个个看.

首先 gc是什么?

gc, 是garbage collection 的简称.这个进程一般都跟着每起一个SESSION而开始运行的.gc目的是为了在session文件过期以后自动销毁删除这些文件. 大家应该猜到三个参数的大致用处了吧?

1、session_gc_probaility

PHP默认不是每个SESSION启动都会启动一个GC来跟踪。这个参数是控制gc跟session启动概率。默认 1。值越大,概率越大。

2、session.gc_divisor

功能同上。 默认100。值越小,概率越大。

3、session.gc_maxlifetime

超过设定时间,gc就认为是垃圾文件。

总结

session_gc_probaility和session.gc_divisor是一对控制gc启动的概率的两个参数。前者是分子,后者是分母。默认是1/100。 1%的几率。 也就是说100个请求中只有一个gc会伴随100个中的某个请求而启动。

=============================================================

而关于SESSION 过期大家也应该有更明确的认识

只有session.cookie_lifetime 控制SESSIOn的过期时间.

可以通过直接修改ini,或者通过ini_set();以及session_set_cookie_params()来修改。

具体看坛子里的其他SESSION精华贴。我记得我发过。

============================================================

举例:

我测试的程序如下:

ini_set("session.gc_divisor", 1);

ini_set("session.gc_maxlifetime", 5);

ini_set("session.cookie_lifetime", 10);

session_start();

if (isset($_SESSION['test']))

{

echo SESSION_ID();

echo "
";

echo $_SESSION['test'];

}

else

{

$_SESSION['test'] = date("Y-M-D H:i:s");

}

echo "
";

echo ini_get("session.gc_maxlifetime");

echo "
";

echo ini_get("session.cookie_lifetime");

?>

这种情况下,gc的最大过期时间比 Session的过期时间短,但是还是按照session的过期时间过期。

注意: WEB是触发式的。所以在你直接关闭IE的情况下,session文件也是依然会存在的。

回复  更多评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值