<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.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>http://www.jackxiang.com/post//</link>
<title><![CDATA[PHP session存入数据库]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 04 May 2010 12:05:07 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<div class="code">nsession.sql <br/>=========================================================================== <br/>create table mysession( <br/>session_key char(32) not null, <br/>session_data text, <br/>session_expiry int(11), <br/>primary key(session_key) <br/>); </div><br/><br/>session_inc.php <br/>============================================================================ <br/><br/><div class="code">&lt;?php <br/><br/>function mysession_open($save_path, $session_name) <br/>&#123; <br/>//echo &#039;&#039;save_path &#039;&#039;.$save_path.&#039;&#039;&lt;br /&gt;&#039;&#039;; <br/>//echo &#039;&#039;session_name &#039;&#039;.$session_name.&#039;&#039;&lt;br /&gt;&#039;&#039;; <br/>@mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;171084&quot;) //选择数据库之前需要先连接数据库服务器 <br/>or die(&quot;数据库服务器连接失败&quot;); <br/>@mysql_select_db(&quot;test&quot;) //选择数据库mydb <br/>or die(&quot;数据库不存在或不可用&quot;); <br/>return true; <br/>&#125; <br/><br/>function mysession_close() <br/>&#123; <br/>return true; <br/>&#125; <br/><br/>function mysession_read($key) <br/>&#123; <br/>//echo &#039;&#039;key &#039;&#039;.$key.&#039;&#039;&lt;br /&gt;&#039;&#039;; <br/>// @mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;171084&quot;) //选择数据库之前需要先连接数据库服务器 <br/>// or die(&quot;数据库服务器连接失败&quot;); <br/>// @mysql_select_db(&quot;test&quot;) //选择数据库mydb <br/>// or die(&quot;数据库不存在或不可用&quot;); <br/>$expiry_time = time(); //获取Session失效时间 <br/>//执行SQL语句获得Session的值 <br/>$query = @mysql_query(&quot;select session_data from mysession &quot; <br/>.&quot;where session_key = &#039;&#039;$key&#039;&#039; and session_expiry &gt; $expiry_time&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>if($row = mysql_fetch_array($query)) <br/>return $row&#91;&#039;&#039;session_data&#039;&#039;&#93;; <br/>else <br/>return false; <br/>&#125; <br/><br/>function mysession_write($key, $data) <br/>&#123; <br/>//echo &#039;&#039;write: &#039;&#039;.$key.&#039;&#039;&lt;br /&gt;&#039;&#039;; <br/>//echo &#039;&#039;data &#039;&#039;.$data.&#039;&#039;&lt;br /&gt;&#039;&#039;; <br/>// @mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;171084&quot;) //选择数据库之前需要先连接数据库服务器 <br/>// or die(&quot;数据库服务器连接失败&quot;); <br/>// @mysql_select_db(&quot;test&quot;) //选择数据库mydb <br/>// or die(&quot;数据库不存在或不可用&quot;); <br/>$expiry_time = time() + 5; //获取Session失效时间 <br/>//查询Session的键值是否已经存在 <br/>$query = @mysql_query(&quot;select session_data from mysession &quot; <br/>.&quot;where session_key = &#039;&#039;$key&#039;&#039;&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>//如果不存在，则执行插入操作，否则执行更新操作 <br/>if(mysql_numrows($query) == 0) <br/>&#123; <br/>//执行SQL语句插入Session 的值 <br/>$query = @mysql_query(&quot;insert into mysession values(&#039;&#039;$key&#039;&#039;, &#039;&#039;$data&#039;&#039;, $expiry_time)&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>&#125; <br/>else <br/>&#123; <br/>//执行 SQL语句更新Session的值 <br/>$query = @mysql_query(&quot;update mysession set &quot; <br/>.&quot;session_data = &#039;&#039;$data&#039;&#039;, session_expiry = $expiry_time &quot; <br/>.&quot;where session_key = &#039;&#039;$key&#039;&#039;&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>&#125; <br/>return $query; <br/>&#125; <br/><br/>function mysession_destroy($key) <br/>&#123; <br/>// @mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;171084&quot;) //选择数据库之前需要先连接数据库服务器 <br/>// or die(&quot;数据库服务器连接失败&quot;); <br/>// @mysql_select_db(&quot;test&quot;) //选择数据库mydb <br/>// or die(&quot;数据库不存在或不可用&quot;); <br/>//执行SQL语句删除Session <br/>$query = @mysql_query(&quot;delete from mysession where session_key = &#039;&#039;$key&#039;&#039;&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>return $query; <br/>&#125; <br/><br/>function mysession_gc($expiry_time) <br/>&#123; <br/>// echo &quot;gc called &quot;; <br/>// @mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;171084&quot;) //选择数据库之前需要先连接数据库服务器 <br/>// or die(&quot;数据库服务器连接失败&quot;); <br/>// @mysql_select_db(&quot;test&quot;) //选择数据库mydb <br/>// or die(&quot;数据库不存在或不可用&quot;); <br/>$expiry_time = time(); <br/>//执行SQL语句删除Session <br/>$query = @mysql_query(&quot;delete from mysession where session_expiry &lt; $expiry_time&quot;) <br/>or die(&quot;SQL语句执行失败&quot;); <br/>return $query; <br/>&#125; <br/>// $domain = &#039;&#039;&#039;&#039;; <br/>//不使用 GET/POST 变量方式 <br/>ini_set(&#039;&#039;session.use_trans_sid&#039;&#039;, 0); <br/>//设置垃圾回收最大生存时间 <br/>ini_set(&#039;&#039;session.gc_maxlifetime&#039;&#039;, 5); <br/>//使用 COOKIE 保存 SESSION ID 的方式 <br/>//ini_set(&#039;&#039;session.use_cookies&#039;&#039;, 1); <br/>//ini_set(&#039;&#039;session.cookie_path&#039;&#039;, &#039;&#039;/&#039;&#039;); <br/>//多主机共享保存 SESSION ID 的 COOKIE <br/>//ini_set(&#039;&#039;session.cookie_domain&#039;&#039;, $domain); <br/>//设置用户自定义Session存储 <br/>ini_set(&#039;&#039;session.save_handler&#039;&#039;, &#039;&#039;user&#039;&#039;); <br/><br/>session_set_save_handler(&#039;&#039;mysession_open&#039;&#039;, <br/>&#039;&#039;mysession_close&#039;&#039;, <br/>&#039;&#039;mysession_read&#039;&#039;, <br/>&#039;&#039;mysession_write&#039;&#039;, <br/>&#039;&#039;mysession_destroy&#039;&#039;, <br/>&#039;&#039;mysession_gc&#039;&#039;); <br/>?&gt; </div><br/><br/>test.php <br/>================================================================================ <br/><br/><div class="code">&lt;?php <br/>include(&#039;&#039;session_inc.php&#039;&#039;); //包含session_set_save_handler定义的文件 <br/>session_start(); <br/>$_SESSION&#91;&#039;&#039;passed&#039;&#039;&#93; = true; <br/>echo $_SESSION&#91;&#039;&#039;passed&#039;&#039;&#93;; <br/>?&gt;</div><br/>爱上游戏私服网，23yx.com <br/>目前基本可用，但sess_gc没有被执行，不知为何。。。 <br/>sess_gc是按一定的概率被调用的。可以设置 <br/>session.gc_probability 与 session.gc_divisor 合起来用来管理 gc（garbage collection 垃圾回收）进程启动的概率。默认为 1。详见 session.gc_divisor。 <br/>session.gc_divisor与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc（garbage collection 垃圾回收）进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。<br/><div class="code">session.gc_divisor 默认为 100。 <br/>ini_set(&#039;&#039;session.gc_probability&#039;&#039;, 50); <br/>ini_set(&#039;&#039;session.gc_divisor&#039;&#039;, 100); </div><br/><br/>还发现PHP牛的一点，如果客户端禁用 cookie，只要<br/><div class="code">ini_set(&#039;&#039;session.use_trans_sid&#039;&#039;, 1); </div>它会自动把session id 附在链接后。Session 就可以正常使用了。<br/>来源：http://www.23yx.com/Article_View.asp?id=43<br/>http://baike.baidu.com/view/1193094.htm?fr=ala0_1
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP session存入数据库]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>