<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[PHP面对对象]]></title> 
<link>http://www.phpobject.net/blog/index.php</link> 
<description><![CDATA[面对对象、MVC框架、PHP安全、PHP优化]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[PHP面对对象]]></copyright>
<item>
<link>http://www.phpobject.net/blog/read.php?127</link>
<title><![CDATA[zend cache使用中注意事项]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Tue, 22 Apr 2008 07:30:42 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?127</guid> 
<description>
<![CDATA[ 
	zend cache的文件缓存性能值得注意。<br/><br/>使用zend cache 作为数据库中间层不是一个很好的主意，尤其是在win操作系统下面（当然也和具体的硬件有关）<br/><br/>在winxp下 sata硬盘测试中显示，对于简单的SQL语句，采用文件缓存的效果没有得到性能上的提升。<br/><br/>使用xdebug发现问题主要处在load的时候zend cache 都需要test metadata。这是主要问题之一。
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?126</link>
<title><![CDATA[is_file和file_exists测试比较]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP技术杂谈]]></category>
<pubDate>Tue, 22 Apr 2008 02:17:07 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?126</guid> 
<description>
<![CDATA[ 
	在使用xdebug测试程序性能中发现is_file和file_exists存在细微的差别。<br/><br/>如果只是判定文件是够存在，使用is_file可以获取到更好的性能。<br/><br/>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?125</link>
<title><![CDATA[windows2003下APACHE2.2.8优化配置手记(一)]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[WEB服务器]]></category>
<pubDate>Tue, 04 Mar 2008 07:31:42 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?125</guid> 
<description>
<![CDATA[ 
	windows2003下APACHE2.2.8优化配置手记。<br/><strong><br/>一、按照日期自定义apache日志</strong><br/><br/><div class="code"><br/>LogFormat &quot;%v %l %u %t &#92;&quot;%r&#92;&quot; %&gt;s %b&quot; comonvhost<br/>CustomLog &nbsp; &quot;&#124;bin/rotatelogs.exe &nbsp; -l &nbsp; D:/apache/logs/access/%Y-%m-%d.log &nbsp; 86400&quot; &nbsp; common &nbsp;<br/>Errorlog &quot;&#124;bin/rotatelogs.exe &nbsp; -l &nbsp; D:/apache/logs/error/%Y-%m-%d.log &nbsp; 86400&quot;<br/></div><br/><strong><br/>二、不能加载动态库的错误。</strong><br/><br/>路径明显正确的情况下出现“PHP Warning: &nbsp;PHP Startup: Unable to load dynamic library”。。原因是动态库有些是依赖其他的DLL的。解决方法<br/>1 将这些依赖的dll拷贝到％windir％&#92;system32下<br/>2 或者将PHP5的安装目录添加到%PATH%中。<br/><strong><br/>三、Apache与WinSock v2相冲突</strong><br/>在错误日志中看到<br/><div class="code"><br/>(OS 64)指定的网络名不再可用。 &nbsp;: winnt_accept: Asynchronous AcceptEx failed.</div><br/>AcceptEx()是一个微软的WinSock2 API ，通过使用BSD风格的accept() API提供了性能改善。一些流行的Windows产品，比如防病毒软件或虚拟专用网络软件，会干扰AcceptEx()的正确操作。具体看apache手册关于Win32DisableAcceptEx 的说明。<br/>解决方法：<br/>在httpd.conf加上<br/><IfModule mpm_winnt.c><br/>Win32DisableAcceptEx # 禁止使用AcceptEx()<br/></IfModule><br/><br/><strong>四、最大连接数</strong><br/>错误日志中提醒<br/>Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting<br/>很明显，把ThreadsPerChild设置的更大一点就可以了。<br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=apache" rel="tag">apache</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=%25E4%25BC%2598%25E5%258C%2596" rel="tag">优化</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=win2003" rel="tag">win2003</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?124</link>
<title><![CDATA[mysql 中InnoDB和MyISAM的区别]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[转载文章]]></category>
<pubDate>Sat, 01 Mar 2008 01:43:01 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?124</guid> 
<description>
<![CDATA[ 
	InnoDB和MyISAM是在使用MySQL最常用的两个表类型，各有优缺点，视具体应用而定。基本的差别为：MyISAM类型不支持事务处理等高级处理，而InnoDB类型支持。MyISAM类型的表强调的是性能，其执行数度比InnoDB类型更快，但是不提供事务支持，而InnoDB提供事务支持已经外部键等高级数据库功能。<br/><br/>MyIASM是IASM表的新版本，有如下扩展：<br/>二进制层次的可移植性。<br/>NULL列索引。<br/>对变长行比ISAM表有更少的碎片。<br/>支持大文件。<br/>更好的索引压缩。<br/>更好的键吗统计分布。<br/>更好和更快的auto_increment处理。<br/><br/>以下是一些细节和具体实现的差别：<br/><br/>1.InnoDB不支持FULLTEXT类型的索引。<br/>2.InnoDB 中不保存表的具体行数，也就是说，执行select count(*) from table时，InnoDB要扫描一遍整个表来计算有多少行，但是MyISAM只要简单的读出保存好的行数即可。注意的是，当count(*)语句包含 where条件时，两种表的操作是一样的。<br/>3.对于AUTO_INCREMENT类型的字段，InnoDB中必须包含只有该字段的索引，但是在MyISAM表中，可以和其他字段一起建立联合索引。<br/>4.DELETE FROM table时，InnoDB不会重新建立表，而是一行一行的删除。<br/>5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的，解决方法是首先把InnoDB表改成MyISAM表，导入数据后再改成InnoDB表，但是对于使用的额外的InnoDB特性（例如外键）的表不适用。<br/><br/>另外，InnoDB表的行锁也不是绝对的，如果在执行一个SQL语句时MySQL不能确定要扫描的范围，InnoDB表同样会锁全表，例如update table set num=1 where name like “%aaa%”<br/><br/>任何一种表都不是万能的，只用恰当的针对业务类型来选择合适的表类型，才能最大的发挥MySQL的性能优势。 <br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=mysql" rel="tag">mysql</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=innodb" rel="tag">innodb</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=myisam" rel="tag">myisam</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?123</link>
<title><![CDATA[mysql中char与varchar的区别]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[转载文章]]></category>
<pubDate>Sat, 01 Mar 2008 01:36:01 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?123</guid> 
<description>
<![CDATA[ 
	char是一种固定长度的类型，varchar则是一种可变长度的类型<br/>　　char(M)类型的数据列里，每个值都占用M个字节，如果某个长度小于M，MySQL就会在它的右边用空格字符补足．（在检索操作中那些填补出来的空格字符将被去掉）在varchar(M)类型的数据列里，每个值只占用刚好够用的字节再加上一个用来记录其长度的字节（即总长度为L+1字节）．<br/><br/>在MySQL中用来判断是否需要进行对据列类型转换的规则<br/><br/>　　１、在一个数据表里，如果每一个数据列的长度都是固定的，那么每一个数据行的长度也将是固定的．<br/>　　２、只要数据表里有一个数据列的长度的可变的，那么各数据行的长度都是可变的．<br/>　　３、如果某个数据表里的数据行的长度是可变的，那么，为了节约存储空间，MySQL会把这个数据表里的固定长度类型的数据列转换为相应的可变长度类型．<br/>例外：长度小于４个字符的char数据列不会被转换为varchar类型<br/><br/>　　对于MyISAM表，尽量使用Char，对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此<br/>　　对于MyISAM表，尽量使用Char，对于那些经常需要修改而容易形成碎片的myisam和isam数据表就更是如此，它的缺点就是占用磁盘空间；<br/>　　对于InnoDB表，因为它的数据行内部存储格式对固定长度的数据行和可变长度的数据行不加区分（所有数据行共用一个表头部分，这个标头部分存放着指向各有关数据列的指针），所以使用char类型不见得会比使用varchar类型好。事实上，因为char类型通常要比varchar类型占用更多的空间，所以从减少空间占用量和减少磁盘i/o的角度，使用varchar类型反而更有利. <br/><br/>http://blog.csdn.net/weilian000/archive/2007/07/19/1699432.aspx
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?121</link>
<title><![CDATA[ETags的一些相关资料]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Tue, 09 Oct 2007 02:25:28 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?121</guid> 
<description>
<![CDATA[ 
	使用ETags减少Web应用带宽和负载 <a href="http://www.infoq.com/cn/articles/etags" target="_blank">http://www.infoq.com/cn/articles/etags</a><br/><br/><br/><br/>Http 1.1 Etag 与 Last-Modified<br/><a href="http://www.dbanotes.net/web/http_11_etag_lastmodified.html" target="_blank">http://www.dbanotes.net/web/http_11_etag_lastmodified.html</a><br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=etag" rel="tag">etag</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?120</link>
<title><![CDATA[优化使用mysql存储session]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Thu, 02 Aug 2007 12:58:08 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?120</guid> 
<description>
<![CDATA[ 
	 &nbsp; 之前写过两篇文章<a href="http://www.phpobject.net/blog/read.php/105.htm" target="_blank">《自定义SESSION（二）——数据库保存》</a>和<a href="http://www.phpobject.net/blog/read.php/17.htm" target="_blank">《我为什么不使用session》</a><br/> &nbsp; 但后来发现都有问题。前者处理在实际中几乎没什么用处，而且session回收还得自己另外处理。后者频繁的操作数据库，打来了很大的性能问题。<br/><br/> &nbsp; 这两天仔细考虑下，大致给出一个方案，但还没有具体详细的测试。<br/> &nbsp; 1、session处理和统计结合起来。同时游客也都有记录。<br/> &nbsp; 2、完全使用数据库和cookie来模拟session的功能。<br/> &nbsp; 3、用户的对session的操作都尽量保证在一条sql语句完成。不用到session的时候，绝对不多一条查询。<br/> &nbsp; 4、为了效率起见，session的回收没有集成进来，但提供了接口，可以调用实现。<br/><br/>暂时给出代码，不具体解释。<br/>sql<br/><div class="code"><br/><br/>CREATE TABLE `*****_session` (<br/> &nbsp;`sid` char(32) NOT NULL,<br/> &nbsp;`uid` int(10) NOT NULL,<br/> &nbsp;`username` char(32) NOT NULL,<br/> &nbsp;`usertype` tinyint(1) NOT NULL,<br/> &nbsp;`activetime` int(10) NOT NULL,<br/> &nbsp;`expiry` int(10) NOT NULL,<br/> &nbsp;`ip` char(15) NOT NULL,<br/> &nbsp;`url` char(80) NOT NULL,<br/> &nbsp;`value` char(255) NOT NULL,<br/> &nbsp;PRIMARY KEY &nbsp;(`sid`)<br/>) ENGINE=MEMORY DEFAULT CHARSET=utf8;<br/><br/></div><br/><br/>php代码<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<br /><span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">class&nbsp;</span><span style="color: #0000BB">session</span><span style="color: #007700">{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;</span><span style="color: #0000BB">$_sessionPrex</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;</span><span style="color: #FF8000">//session的前缀<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$_time&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;</span><span style="color: #FF8000">//当前时间<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$_model&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">;</span><span style="color: #FF8000">//数据库操作模型<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$_expiry&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1200</span><span style="color: #007700">;</span><span style="color: #FF8000">//session有效时间<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">private&nbsp;</span><span style="color: #0000BB">$_domain&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;</span><span style="color: #FF8000">//session的作用域<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">protected&nbsp;</span><span style="color: #0000BB">$isNew&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;</span><span style="color: #FF8000">//判定操作动作&nbsp;0&nbsp;更新&nbsp;1&nbsp;增加<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">protected&nbsp;</span><span style="color: #0000BB">$session&nbsp;</span><span style="color: #007700">=&nbsp;array();</span><span style="color: #FF8000">//对应的一条session记录<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">$options</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setOptions</span><span style="color: #007700">(</span><span style="color: #0000BB">$options</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(empty(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">))</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">time</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'activetime'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">start</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_getSid</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">set</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">,</span><span style="color: #0000BB">$value</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">,array(</span><span style="color: #DD0000">'uid'</span><span style="color: #007700">,</span><span style="color: #DD0000">'username'</span><span style="color: #007700">,</span><span style="color: #DD0000">'usertype'</span><span style="color: #007700">,</span><span style="color: #DD0000">'url'</span><span style="color: #007700">,</span><span style="color: #DD0000">'expiry'</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'expiry'</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_sid'</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'sid'</span><span style="color: #007700">],</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_uid'</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'uid'</span><span style="color: #007700">],</span><span style="color: #0000BB">$value</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$other&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$other</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$other</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">get</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">,array(</span><span style="color: #DD0000">'uid'</span><span style="color: #007700">,</span><span style="color: #DD0000">'username'</span><span style="color: #007700">,</span><span style="color: #DD0000">'usertype'</span><span style="color: #007700">,</span><span style="color: #DD0000">'url'</span><span style="color: #007700">,</span><span style="color: #DD0000">'expiry'</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">])){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">][</span><span style="color: #0000BB">$key</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">gc</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">,</span><span style="color: #0000BB">$time&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1200</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$lasttime&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$lasttime&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$time</span><span style="color: #007700">&lt;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$file</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">delete</span><span style="color: #007700">(</span><span style="color: #DD0000">'activetime+expiry&lt;'</span><span style="color: #007700">.</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">destroy</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'uid'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'username'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'usertype'</span><span style="color: #007700">]&nbsp;=&nbsp;-</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'expiry'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_expiry</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]&nbsp;=&nbsp;array();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_sid'</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'sid'</span><span style="color: #007700">],</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_expiry</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_uid'</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'uid'</span><span style="color: #007700">],</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_expiry</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">__destruct</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_save</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_save</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbSession&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">serialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">])&gt;</span><span style="color: #0000BB">255</span><span style="color: #007700">)</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_error</span><span style="color: #007700">(</span><span style="color: #DD0000">'session-&gt;value&nbsp;is&nbsp;too&nbsp;long!'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">isNew&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//增加<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">insert</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//更新<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$sid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'sid'</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">update</span><span style="color: #007700">(</span><span style="color: #0000BB">array_slice</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">,</span><span style="color: #0000BB">1</span><span style="color: #007700">),</span><span style="color: #DD0000">'sid=\''</span><span style="color: #007700">.</span><span style="color: #0000BB">$sid</span><span style="color: #007700">.</span><span style="color: #DD0000">'\''</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_getSession</span><span style="color: #007700">(</span><span style="color: #0000BB">$sid</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbSession&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_model</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">detail</span><span style="color: #007700">(</span><span style="color: #DD0000">'sid&nbsp;=&nbsp;\''</span><span style="color: #007700">.</span><span style="color: #0000BB">$sid</span><span style="color: #007700">.</span><span style="color: #DD0000">'\''</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">)return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">[</span><span style="color: #DD0000">'value'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">array_merge</span><span style="color: #007700">(</span><span style="color: #0000BB">$dbSession</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_getSid</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$sid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">strip_tags</span><span style="color: #007700">(</span><span style="color: #0000BB">$_COOKIE</span><span style="color: #007700">[</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_sid'</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">strlen</span><span style="color: #007700">(</span><span style="color: #0000BB">$sid</span><span style="color: #007700">)==</span><span style="color: #0000BB">32</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_getSession</span><span style="color: #007700">(</span><span style="color: #0000BB">$sid</span><span style="color: #007700">)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$sid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #0000BB">time</span><span style="color: #007700">().</span><span style="color: #0000BB">mt_rand</span><span style="color: #007700">(</span><span style="color: #0000BB">1000</span><span style="color: #007700">,</span><span style="color: #0000BB">10000</span><span style="color: #007700">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_sid'</span><span style="color: #007700">,</span><span style="color: #0000BB">$sid</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_sessionPrex</span><span style="color: #007700">.</span><span style="color: #DD0000">'_uid'</span><span style="color: #007700">,</span><span style="color: #0000BB">0</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'uid'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'username'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'usertype'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;-</span><span style="color: #0000BB">1</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'activetime'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'ip'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_getip</span><span style="color: #007700">(),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">strip_tags</span><span style="color: #007700">(</span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'REQUEST_URI'</span><span style="color: #007700">]),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'expiry'&nbsp;</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_expiry</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'value'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">isNew&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">session</span><span style="color: #007700">[</span><span style="color: #DD0000">'sid'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">$sid</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_setCookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">,</span><span style="color: #0000BB">$value</span><span style="color: #007700">,</span><span style="color: #0000BB">$expiry</span><span style="color: #007700">=</span><span style="color: #0000BB">0</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(empty(</span><span style="color: #0000BB">$expiry</span><span style="color: #007700">))</span><span style="color: #0000BB">$expiry&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_expiry</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(empty(</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_domain</span><span style="color: #007700">)){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">,</span><span style="color: #0000BB">$value</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$expiry</span><span style="color: #007700">,</span><span style="color: #DD0000">'/'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">setcookie</span><span style="color: #007700">(</span><span style="color: #0000BB">$name</span><span style="color: #007700">,</span><span style="color: #0000BB">$value</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_time&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">$expiry</span><span style="color: #007700">,</span><span style="color: #DD0000">'/'</span><span style="color: #007700">,</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">_domain</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_getip</span><span style="color: #007700">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">getip</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_setOptions</span><span style="color: #007700">(</span><span style="color: #0000BB">$options</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">$options&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">$key</span><span style="color: #007700">=&gt;</span><span style="color: #0000BB">$value</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$key</span><span style="color: #007700">,array(</span><span style="color: #DD0000">'sessionPrex'</span><span style="color: #007700">,</span><span style="color: #DD0000">'time'</span><span style="color: #007700">,</span><span style="color: #DD0000">'model'</span><span style="color: #007700">,</span><span style="color: #DD0000">'expiry'</span><span style="color: #007700">,</span><span style="color: #DD0000">'domain'</span><span style="color: #007700">))){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'_'</span><span style="color: #007700">.</span><span style="color: #0000BB">$key</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;function&nbsp;</span><span style="color: #0000BB">_error</span><span style="color: #007700">(</span><span style="color: #0000BB">$msg</span><span style="color: #007700">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;</span><span style="color: #0000BB">Phpbean_Exception</span><span style="color: #007700">(</span><span style="color: #0000BB">$msg</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000BB">?&gt;<br /></span>
</span>
</code></div><br/>(注意，该代码不能直接使用，本文主要是提供一种思路)<br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=session" rel="tag">session</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=%25E4%25BC%2598%25E5%258C%2596" rel="tag">优化</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?119</link>
<title><![CDATA[MYSQL limit的优化]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP相关]]></category>
<pubDate>Wed, 01 Aug 2007 02:55:40 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?119</guid> 
<description>
<![CDATA[ 
	 &nbsp; &nbsp; &nbsp; &nbsp;MYSQL的优化是非常重要的。其他最常用也最需要优化的就是limit。mysql的limit给分页带来了极大的方便，但数据量一大的时候，limit的性能就急剧下降。<br/> &nbsp; &nbsp; &nbsp; &nbsp;同样是取10条数据<br/><div class="code"><br/>select * from yanxue8_visit limit 10000,10<br/></div><br/> &nbsp; &nbsp; &nbsp; &nbsp;和<br/><div class="code"><br/>select * from yanxue8_visit limit 0,10<br/></div><br/>就不是一个数量级别的。<br/><br/> &nbsp; &nbsp; 网上也很多关于limit的五条优化准则，都是翻译自mysql手册，虽然正确但不实用。今天发现一篇文章写了些关于limit优化的，很不错。原文地址：<a href="http://www.zhenhua.org/article.asp?id=200" target="_blank">http://www.zhenhua.org/article.asp?id=200</a><br/><br/> &nbsp; &nbsp; 文中不是直接使用limit，而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据，明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。（测试环境win2033+p4双核(3GHZ) +4G内存 mysql 5.0.19）<br/><br/><strong>1、offset比较小的时候。</strong><br/><div class="code"><br/> &nbsp;select * from yanxue8_visit limit 10,10<br/></div><br/> &nbsp; &nbsp;多次运行，时间保持在0.0004-0.0005之间<br/><div class="code"><br/> &nbsp; Select * From yanxue8_visit Where vid &gt;=(<br/> Select vid From yanxue8_visit Order By vid limit 10,1<br/>) limit 10<br/></div><br/> &nbsp; 多次运行，时间保持在0.0005-0.0006之间，主要是0.0006<br/> &nbsp;结论：偏移offset较小的时候，直接使用limit较优。这个显然是子查询的原因。<br/><br/><br/><strong>2、offset大的时候。</strong><br/><div class="code"><br/> &nbsp;select * from yanxue8_visit limit 10000,10<br/></div><br/> &nbsp; &nbsp;多次运行，时间保持在0.0187左右<br/><div class="code"><br/> &nbsp; Select * From yanxue8_visit Where vid &gt;=(<br/> Select vid From yanxue8_visit Order By vid limit 10000,1<br/>) limit 10<br/></div><br/> 多次运行，时间保持在0.0061左右，只有前者的1/3。可以预计offset越大，后者越优。<br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=mysql" rel="tag">mysql</a> , <a href="http://www.phpobject.net/blog/tag.php?tag=limit" rel="tag">limit</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?118</link>
<title><![CDATA[深入解析模板技术原理【一】]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[PHP高级技术]]></category>
<pubDate>Sun, 01 Jul 2007 08:54:59 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?118</guid> 
<description>
<![CDATA[ 
	作者：飞风http://www.phpobject.net feifengxlq@gmail.com &nbsp;时间：2007-7-1<br/><strong>1、模板的由来</strong><br/>在没有模板技术之前，使用PHP开发程序，通常都是php代码和html混编在一起。比如说新闻列表，很可能就是一个newslist.php页面，结构如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<br /><span style="color: #0000BB">&lt;?<br /></span><span style="color: #FF8000">//从数据库中读取出要显示的新闻记录<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;html&gt;<br />&lt;head&gt;……..<br />&lt;/head&gt;<br />&lt;body&gt;<br /><span style="color: #0000BB">&lt;?<br />&nbsp;</span><span style="color: #007700">While&nbsp;(</span><span style="color: #0000BB">$news&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">mysql_fetch_array</span><span style="color: #007700">(</span><span style="color: #0000BB">$result</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;!--输出新闻标题&nbsp;&nbsp;--&nbsp;&gt;<br /><span style="color: #0000BB">&lt;?<br />&nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;<br /></span>&lt;/body&gt;<br />&lt;/html&gt;<br /></span>
</code></div><br/>那么这样有什么问题呢？首先，不利于分工合作。一般来说，都会由程序员来写代码，美工人员设计页面。那么在这种方式中，程序员必须等待美工人员把界面设计好才能开始工作。也就是说程序员和美工的工作是不能同步的。其次、不利于维护，可维护性差。比如说程序固定后，要修改界面，那么必须由美工修改后，程序员再重新添加。最后，程序结构混乱，可读性差。HTML和PHP混编在一起，一旦程序一多，就会变的非常的凌乱。<br/><br/><strong>理解模板原理——使用PHP标签的模板技术</strong><br/>模板技术正是为了解决这些问题而出现的，为了解决这些问题，最早出现的是使用php标签的模板技术。<br/>首先，我们要明白模板的目的是什么。模板主要要实现几个任务呢？第一、美工和程序的分离。更确切的说法是获取数据和显示数据的分离。第二、分工。良好的分工合作。<br/>比如说新闻列表，如果使用模板，我们就可以把新闻列表的操作分成两部分：<br/>1、 &nbsp;getnews.php 负责从数据库中读取数据到数组$news中，不关心$news是如何显示的。<br/>2、 &nbsp;Shownews.php 负责把$news数组输出成HTML页面。而它不需要理会$news是从哪里来的。<br/>好，这样，我们就实现了美工和程序的分离，达到了我们的初步目的，但是如何把这两个页面联合起来，并实现listnews.php的功能呢？<br/>这就需要另外一个页面listnews.php，来负责把“美工（显示数据）”和“程序员（获取数据）”连接起来。应该说这个页面就是很简单了。<br/>假设getnews.php的代码如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?<br />$news&nbsp;</span><span style="color: #007700">=</span><span style="color: #0000BB">“新闻列表”</span><span style="color: #007700">;</span><span style="color: #FF8000">//实际中应该是从数据库中读取出来的。<br /></span><span style="color: #0000BB">?&gt;<br /></span>
</span>
</code></div><br/>Shownesw.php的代码如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;显示新闻&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br /><span style="color: #0000BB">&lt;?=$news?&gt;<br /></span>&lt;/body&gt;<br />&lt;/html&gt;<br /></span>
</code></div><br/>那么，这个联合页面listnews.php的代码就很简单了<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">Include(</span><span style="color: #0000BB">‘getnews</span><span style="color: #007700">.</span><span style="color: #0000BB">php’</span><span style="color: #007700">);</span><span style="color: #FF8000">//获取数据<br /></span><span style="color: #007700">Include(</span><span style="color: #0000BB">‘shownesw</span><span style="color: #007700">.</span><span style="color: #0000BB">php’</span><span style="color: #007700">);</span><span style="color: #FF8000">//显示数据<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div><br/><br/><strong>总结</strong><br/>使用PHP标签的模板系统，能够很好的实现美工和程序的分离，同时方便程序员和美工人员的分工合作，比如在上面的例子中shownews.php由美工人员来维护，getnews.php由程序人员来维护。而listnews.php就可以由系统设计人员来维护了。当然这中间需要增加一些约定的文档。<br/>事实上，这个简单的例子也说明了最基本的MVC模型。其中M，模型，也就是负责读取数据，相当于我们的getnews.php。V，就是试图，用来显示数据，也就对应了shownews.php。最后是控制器C，对应我们的listnews.php<br/><br/><strong>学习解释性模板技术——PHPLIB</strong><br/>Phplib的模板系统以小巧灵活、方便简单的特点赢得了很多phper的喜欢，在模板技术中占有一定的地位，它和fasttemplate之类的模板引擎都属于解释性模板技术。<br/>在具体讲解phplib的使用之前，先说明为什么使用php标签的模板系统要继续改进。其实，这主要还是因为PHP标签对美工人员来说不方便。他们更加喜欢直接使用这种可视化的标签，比如&#123;title&#125;。<br/>首先，我们自己把之前我们那个例子修改成使用可视化的标签来处理。第一步，把shownews.php改成shownews.tpl，里面的php标签换成可视化的标签，shownews.tpl的代码如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;显示新闻&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />{title}<br />&lt;/body&gt;<br />&lt;/html&gt;</span>
</code></div><br/>第二步，如何实现listnews.php的效果呢？其实很简单，我只要直接把&#123;title&#125;替换成<?=$news?>不就可以了吗？所以，修改后的listnews.php的代码如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">Include(</span><span style="color: #DD0000">'getnews.php'</span><span style="color: #007700">);</span><span style="color: #FF8000">//获取数据<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'{title}'</span><span style="color: #007700">,</span><span style="color: #0000BB">$news</span><span style="color: #007700">,</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">'shownews.tpl'</span><span style="color: #007700">))<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div><br/><br/>其实phplib的原理正是这样！比如说我们要使用phplib来实现上面功能，我们只需要修改listnews.php.修改后代码如下：<br/><div class="code" style="overflow: auto;"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?<br /></span><span style="color: #007700">Include(</span><span style="color: #DD0000">'getnews.php'</span><span style="color: #007700">);</span><span style="color: #FF8000">//获取数据<br /></span><span style="color: #007700">include(</span><span style="color: #DD0000">'template.class.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$t</span><span style="color: #007700">=new&nbsp;</span><span style="color: #0000BB">Template</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$t</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_file</span><span style="color: #007700">(</span><span style="color: #0000BB">‘shownesw</span><span style="color: #007700">,</span><span style="color: #DD0000">'shownews.tpl'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$t</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">set_var</span><span style="color: #007700">(</span><span style="color: #DD0000">'news'</span><span style="color: #007700">,</span><span style="color: #0000BB">$news</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$t</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parse</span><span style="color: #007700">(</span><span style="color: #DD0000">'out'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">‘shownesw’</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$t</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">p</span><span style="color: #007700">(</span><span style="color: #DD0000">'out'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div><br/>另外关于phplib的区域，大家可以去查阅相应的手册。<br/><br/><strong>编译型的samrty，下次继续讲</strong><br/><br/>Tags - <a href="http://www.phpobject.net/blog/tag.php?tag=%25E6%25A8%25A1%25E6%259D%25BF" rel="tag">模板</a>
]]>
</description>
</item><item>
<link>http://www.phpobject.net/blog/read.php?117</link>
<title><![CDATA[【Phpbean】框架说明]]></title> 
<author>feifengxlq &lt;feifengxlq@gmail.com&gt;</author>
<category><![CDATA[Phpbean框架]]></category>
<pubDate>Sun, 01 Jul 2007 06:15:52 +0000</pubDate> 
<guid>http://www.phpobject.net/blog/read.php?117</guid> 
<description>
<![CDATA[ 
	<a href="http://www.phpobject.net/blog/attachment/1183270485_0.bmp" target="_blank"><img src="http://www.phpobject.net/blog/attachment/1183270485_0.bmp" class="insertimage" alt="点击在新窗口中浏览此图片" title="点击在新窗口中浏览此图片" border="0"/></a><br/> &nbsp; &nbsp; Phpbean的核心文件很少，这和phpbean的设计思想（强调性能和分工合作开发）是非常相关的。Phpbean的核心仅仅只是实现基本的MVC框架，不提供任何多余的代码，对程序员是非常透明的。<br/>Phpbean的核心文件说明如下（注意，核心文件大都可以单独使用）：<br/>1、&nbsp;&nbsp;action.php action的基类。任何其他的action都必须是它的子类。里面之实现一个功能：对URL数据的处理。<br/>2、&nbsp;&nbsp;Exception.php是异常处理类，直接继承与Exception<br/>3、&nbsp;&nbsp;Registry.php phpbean的注册器。关于注册器，可以参考我翻译的文章<a href="http://www.phpobject.net/blog/read.php/77.htm" target="_blank">在PHP中使用全局变量</a>http://www.phpobject.net/blog/read.php/77.htm<br/>4、&nbsp;&nbsp;Router.php 路由处理。<br/>5、&nbsp;&nbsp;View.php 试图渲染类。<br/>6、&nbsp;&nbsp;DB/model.php 和Db/mysql.php 主要是模型层。目前只提供了MYSQL的封装。模型中实现了基本的CURD.对于多表联查等orm并没有实现（主要是考虑性能。）对于DB层的封装，如果需要复杂的orm实现，推荐使用ZF的DB。<br/><br/>目前PHPBEAN提供的可选库类有：<br/>1、&nbsp;&nbsp;FILE文件库类。提供了文件上传、下载封装类。<br/>2、&nbsp;&nbsp;Page分页类。JS和PHP分页类。<br/>3、&nbsp;&nbsp;IMG图像处理类。目前只提供验证码程序<br/>4、&nbsp;&nbsp;Validate验证类。支持和zend Framework的验证类一起使用。具体可以参考<a href="http://www.phpobject.net/blog/read.php/110.htm" target="_blank">如何扩展ZF——Validate扩展</a> http://www.phpobject.net/blog/read.php/110.htm<br/>5、&nbsp;&nbsp;Lucene全文检索（即将推出）。是在zend lucene基础上提供二次开发接口。可能会参考weblucene和nutch的设计。关于中文分词可以参考<a href="http://www.phpobject.net/blog/read.php/113.htm" target="_blank">使用zend Framework的lucene进行全文检索——中文分词 </a><br/>http://www.phpobject.net/blog/read.php/113.htm<br/><br/>Phpbean致力与为程序员提供一个高度灵活、高度透明的框架。<br/>
]]>
</description>
</item>
</channel>
</rss>