<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>https://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>https://jackxiang.com/post/5328/</link>
<title><![CDATA[关于php中设置session过期时间的问题]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Wed, 13 Jun 2012 08:43:09 +0000</pubDate> 
<guid>https://jackxiang.com/post/5328/</guid> 
<description>
<![CDATA[ 
	关于php的session文件垃圾回收机制。我已经在网上看了不少资料。大致是说session过期并不会马上清除session文件,而是每次有请求过来的时候根据session.gc_probability/session.gc_divisor的值为概率去遍历以便session目录下的session文件看是否存在过期的session文件，如果过期则清楚。<br/>看完这些资料起初并没有什么疑问。但是想说实践出真知于是就自己动手试试看是不是这样子的。<br/>首先我建立了一个文件test.php:<br/>ini_set(&#039;session.gc_maxlifetime&#039;,&#039;1&#039;);<br/>session_start();<br/>$_SESSION[&#039;uid&#039;]=&quot;123&quot;;<br/>还有另外一个文件tt.php:<br/>session_start();<br/>echo $_SESSION[&quot;uid&quot;];<br/>php.ini中：（后面测试中这个文件的内容都一样）<br/>session.gc_probability = 1<br/>session.gc_divisor&nbsp;&nbsp;&nbsp;&nbsp; = 100<br/>先请求test.php然后隔5秒再请求test.php。结果显示123。这说明session数据并没有被清除掉<br/> <br/>再来一种情况：<br/>test.php:<br/>ini_set(&#039;session.gc_maxlifetime&#039;,&#039;1&#039;);<br/>session_start();<br/>$_SESSION[&#039;uid&#039;]=&quot;123&quot;;<br/> <br/>php.ini中：<br/>session.gc_probability = 1<br/>session.gc_divisor&nbsp;&nbsp;&nbsp;&nbsp; = 1<br/>先请求test.php然后隔5秒再请求test.php。结果显示123。这说明session数据并没有被清除掉<br/>然后再来测试一下：<br/>test.php:<br/>ini_set(&#039;session.gc_maxlifetime&#039;,&#039;1&#039;);<br/>session_cache_expire(1);<br/>session_start();<br/>php.ini中：<br/>session.gc_probability = 1<br/>session.gc_divisor&nbsp;&nbsp;&nbsp;&nbsp; = 1<br/>先请求test.php然后隔5秒再请求test.php。结果显示123。还是没有清理掉，我还以为可以了呢。看来再瞎测下去也不是办法，如果能找到session文件所在磁盘位置再来测试效果会好一些。终于让我找到了，我的php.ini里面的session.save_path是注释掉的。所以它会默认存到个人的临时目录文件夹下C:&#92;Documents and Settings&#92;syx&#92;Local Settings&#92;Temp<br/>看了一下果<br/><br/>会话函数参考：http://www.hur.cn/special/PHP5/fancy/ref.session.html<br/>英文参考：&nbsp;&nbsp;http://cn.php.net/manual/en/session.configuration.php<br/>主要Session在PHP.ini里的配置项如下：<br/>session.gc_probabilityintegersession.gc_probability 与 session.gc_divisor 合起来用来管理 gc（garbage collection 垃圾回收）进程启动的概率。默认为 1。详见 session.gc_divisor。 session.gc_divisorintegersession.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc（garbage collection 垃圾回收）进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor默认为 100。 <br/>
]]>
</description>
</item><item>
<link>https://jackxiang.com/post/5328/#blogcomment63811</link>
<title><![CDATA[[评论] 关于php中设置session过期时间的问题]]></title> 
<author>dabai &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sat, 20 Oct 2012 06:46:50 +0000</pubDate> 
<guid>https://jackxiang.com/post/5328/#blogcomment63811</guid> 
<description>
<![CDATA[ 
	大哥&nbsp;&nbsp;怎么看到最后也没看明白啊&nbsp;&nbsp;一直是没清理掉啊&nbsp;&nbsp;找到了session文件的存放目录后又怎么测试了呢 我也遇到这样的情况了&nbsp;&nbsp;一直没清理掉 gc_probability/gc_divisor = 1/1 是=1的 测试用
]]>
</description>
</item>
</channel>
</rss>