<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post//</link>
<title><![CDATA[使用MYSQL开始PHP会话]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[开发应用]]></category>
<pubDate>Sun, 05 Feb 2006 01:06:19 +0000</pubDate> 
<guid>https://atim.cn/post//</guid> 
<description>
<![CDATA[ 
	<p>默认情况下，PHP会话（session）是通过文件来保存的。这样做有以下几个缺点：</p><blockquote><ol><li>会话文件一般都很小，但文件数却很多，在文件系统中保存许多这样的小文件非常浪费空间，且效率不高。 </li><li>分布式的站点难以利用会话文件来共享会话。 </li><li>会话文件方式不利于统计在线用户的会话信息。 </li></ol></blockquote><p>为解决以上问题，我们可以考虑用数据库来保存会话信息。</p><p>对于 PHP 开发来说，保存会话用 MySQL 是一个非常不错的选择。MySQL 提供一种建立在内存中的表类型 Heap，如果每条会话数据量很小的话，可以考虑用这种类型的表来进一步优化性能。但是 Heap 类型的表有许多限制，例如它不支持 text 类型的字段，因此如果在无法预测会话数据记录长度的情况下，选择 MyISAM 是比较合适的，这种类型的表没有事物处理开销，对于基于磁盘的表可以得到最优性能。</p><p>下面是 sessions 表的结构：</p><div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="COLOR: green">DROP</span><span style="COLOR: gray"> </span><span style="COLOR: green">TABLE</span><span style="COLOR: gray"> </span><span style="COLOR: blue">IF</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">EXISTS</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">sessions</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray"></span><span style="COLOR: green">CREATE</span><span style="COLOR: gray"> </span><span style="COLOR: green">TABLE</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">sessions</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">session_id</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: green">varchar</span><span style="COLOR: olive">(</span><span style="COLOR: maroon">32</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: green">NOT</span><span style="COLOR: gray"> </span><span style="COLOR: green">NULL</span><span style="COLOR: gray"> </span><span style="COLOR: green">default</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">''</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">user_id</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: green">int</span><span style="COLOR: olive">(</span><span style="COLOR: maroon">10</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: blue">unsigned</span><span style="COLOR: gray"> </span><span style="COLOR: green">NOT</span><span style="COLOR: gray"> </span><span style="COLOR: green">NULL</span><span style="COLOR: gray"> </span><span style="COLOR: green">default</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">0</span><span style="COLOR: #8b0000">'</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">data_value</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: blue">text</span><span style="COLOR: gray"> </span><span style="COLOR: green">NOT</span><span style="COLOR: gray"> </span><span style="COLOR: green">NULL</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">last_visit</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: green">timestamp</span><span style="COLOR: olive">(</span><span style="COLOR: maroon">14</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: green">NOT</span><span style="COLOR: gray"> </span><span style="COLOR: green">NULL</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: green">PRIMARY</span><span style="COLOR: gray"> </span><span style="COLOR: green">KEY</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">session_id</span><span style="COLOR: #8b0000">`</span><span style="COLOR: olive">)</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">  </span><span style="COLOR: green">KEY</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">user_id</span><span style="COLOR: #8b0000">`</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">`</span><span style="COLOR: blue">user_id</span><span style="COLOR: #8b0000">`</span><span style="COLOR: olive">)</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray"></span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">TYPE</span><span style="COLOR: gray">=</span><span style="COLOR: blue">MyISAM</span><span style="COLOR: gray">;</span></li></ol></div><p>PHP 支持用户会话模块，可以通过 session_set_save_handler 来设置自定义的会话处理函数。因为默认的处理模块是 files，因此要在用 session_set_save_handler 设置会话处理函数之前，先用 session_module_name(’user’) 来告诉 PHP 使用用户会话模块， 而session_set_save_handler 必须要在 session_start 之前执行。</p><p>用户会话数据在会话处理函数中都是序列化之后的，要取出其中的某个会话变量，可以对其进行反序列化，默认是 php 序列化方式，可以用 session::unserialize 函数来反序列化。</p><p>下面的代码定义了一个用 MySQL 来处理 PHP 会话的类，其中所使用的 class_mysql.php 请参见 <a href="http://www.coolcode.cn/?p=35"><font color="#0000ff">《超级简单但超级实用的 PHP 的 mysql 类》</font></a> 。</p><div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number."><li class="hl-firstline"><span style="COLOR: blue">&lt;?php</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray"></span><span style="COLOR: #ffa500">/**</span> </li><li><span style="COLOR: #ffa500">*</span><span style="COLOR: blue"> @author </span><span style="COLOR: #ffa500">马秉尧</span> </li><li><span style="COLOR: #ffa500">*</span><span style="COLOR: blue"> @copyright </span><span style="COLOR: #ffa500">(C) 2005 CoolCode.CN</span> </li><li><span style="COLOR: #ffa500">*/</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray"></span></li><li><span style="COLOR: gray"></span><span style="COLOR: green">require_once</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">class_mysql.php</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray"></span></li><li><span style="COLOR: gray"></span><span style="COLOR: green">class</span><span style="COLOR: gray"> </span><span style="COLOR: blue">session</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">var</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$db</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">session</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$db</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray"> = &amp;</span><span style="COLOR: #00008b">$db</span><span style="COLOR: gray">; </span></li><li><span style="COLOR: gray">        </span><span style="COLOR: blue">session_module_name</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">user</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: blue">session_set_save_handler</span><span style="COLOR: olive">(</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">open</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">close</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">read</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">write</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">destroy</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray">, </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: green">array</span><span style="COLOR: olive">(</span><span style="COLOR: gray">&amp;</span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">, </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">gc</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">)</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: blue">session_start</span><span style="COLOR: olive">()</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">unserialize</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$vars</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">preg_split</span><span style="COLOR: olive">(</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">/([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*)|/</span><span style="COLOR: #8b0000">'</span><span style="COLOR: gray">,</span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: gray">, -</span><span style="COLOR: maroon">1</span><span style="COLOR: gray">, </span><span style="COLOR: blue">PREG_SPLIT_NO_EMPTY</span><span style="COLOR: gray"> |                </span></li><li><span style="COLOR: gray">            </span><span style="COLOR: blue">PREG_SPLIT_DELIM_CAPTURE</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">for</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$i</span><span style="COLOR: gray"> = </span><span style="COLOR: maroon">0</span><span style="COLOR: gray">; </span><span style="COLOR: #00008b">$vars</span><span style="COLOR: olive">[</span><span style="COLOR: #00008b">$i</span><span style="COLOR: olive">]</span><span style="COLOR: gray">; </span><span style="COLOR: #00008b">$i</span><span style="COLOR: gray">++</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: #00008b">$result</span><span style="COLOR: olive">[</span><span style="COLOR: #00008b">$vars</span><span style="COLOR: olive">[</span><span style="COLOR: #00008b">$i</span><span style="COLOR: gray">++</span><span style="COLOR: olive">]]</span><span style="COLOR: gray"> = </span><span style="COLOR: blue">unserialize</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$vars</span><span style="COLOR: olive">[</span><span style="COLOR: #00008b">$i</span><span style="COLOR: olive">])</span><span style="COLOR: gray">;    </span></li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$result</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">open</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$path</span><span style="COLOR: gray">, </span><span style="COLOR: #00008b">$name</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">true</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">close</span><span style="COLOR: olive">()</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">true</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">read</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">escape_string</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">if</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$row</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">select * from `sessions` where `session_id` = '</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: red">' limit 1</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">))</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$row</span><span style="COLOR: olive">[</span><span style="COLOR: #8b0000">'</span><span style="COLOR: red">data_value</span><span style="COLOR: #8b0000">'</span><span style="COLOR: olive">]</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">else</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">insert into `sessions` set `session_id` = '</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: red">'</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #8b0000">&quot;&quot;</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">write</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: gray">, </span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$data</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">unserialize</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">escape_string</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">escape_string</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">update `sessions` set </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: gray"> </span> </li><li><span style="COLOR: gray">                                . </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">`user_id` = '</span><span style="COLOR: #00008b">&#123;$data['user_id']&#125;</span><span style="COLOR: red">', </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">                                . </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">`data_value` = '</span><span style="COLOR: #00008b">$data_value</span><span style="COLOR: red">', </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">                                . </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">`last_visit` = null </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">                                . </span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">where `session_id` = '</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: red">'</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">true</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">destroy</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">escape_string</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">delete from `sessions` where `session_id` = '</span><span style="COLOR: #00008b">$session_id</span><span style="COLOR: red">'</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">true</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">gc</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$lifetime</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">delete from `sessions` where unix_timestamp(now()) - unix_timestamp(`last_visit`) &gt; </span><span style="COLOR: #00008b">$lifetime</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: green">true</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: #ffa500">// get sessions by user_id</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">get</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$user_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: #00008b">$user_id</span><span style="COLOR: gray"> = </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">escape_string</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$user_id</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">select * from `sessions` where `user_id` = '</span><span style="COLOR: #00008b">$user_id</span><span style="COLOR: red">'</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: #ffa500">// get sessions list</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: green">function</span><span style="COLOR: gray"> </span><span style="COLOR: blue">lists</span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$page</span><span style="COLOR: gray">, </span><span style="COLOR: #00008b">$rows</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">if</span><span style="COLOR: gray"> </span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$page</span><span style="COLOR: gray"> == </span><span style="COLOR: maroon">0</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">select * from `sessions` order by `user_id`</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: green">else</span><span style="COLOR: gray"> </span><span style="COLOR: olive">&#123;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: #00008b">$start</span><span style="COLOR: gray"> = </span><span style="COLOR: olive">(</span><span style="COLOR: #00008b">$page</span><span style="COLOR: gray"> - </span><span style="COLOR: maroon">1</span><span style="COLOR: olive">)</span><span style="COLOR: gray"> * </span><span style="COLOR: #00008b">$rows</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">            </span><span style="COLOR: green">return</span><span style="COLOR: gray"> </span><span style="COLOR: #00008b">$this</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">db</span><span style="COLOR: gray">-&gt;</span><span style="COLOR: blue">query</span><span style="COLOR: olive">(</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: red">select * from `sessions` order by `user_id` limit </span><span style="COLOR: #00008b">$start</span><span style="COLOR: red">, </span><span style="COLOR: #00008b">$rows</span><span style="COLOR: #8b0000">&quot;</span><span style="COLOR: olive">)</span><span style="COLOR: gray">;</span> </li><li><span style="COLOR: gray">        </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray">    </span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray"></span><span style="COLOR: olive">&#125;</span><span style="COLOR: gray"></span> </li><li><span style="COLOR: gray"></span><span style="COLOR: blue">?&gt;</span></li></ol></div><p>这个类的使用很简单，在原来使用 session_start 的地方，替换成 $session = new session($db) 就可以了。$db 表示 sessions 表所在的数据库。</p><p>另外可以用 get 方法来获取某个用户的所有会话信息，通过 lists 方法来得到所有用户会话列表。这样就可以方便的管理用户会话了。</p>
]]>
</description>
</item><item>
<link>https://atim.cn/post//#blogcomment</link>
<title><![CDATA[[评论] 使用MYSQL开始PHP会话]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://atim.cn/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>