<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>水草树 &#187; PHP</title>
	<atom:link href="http://mifunny.info/category/study/php52/feed" rel="self" type="application/rss+xml" />
	<link>http://mifunny.info</link>
	<description>走走停停看看，恍然大悟。</description>
	<lastBuildDate>Sun, 25 Mar 2012 15:09:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>在PHP中像JQuery一样操作HTML</title>
		<link>http://mifunny.info/work-with-php-but-dance-like-jquery-345.html</link>
		<comments>http://mifunny.info/work-with-php-but-dance-like-jquery-345.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 12:13:39 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpQuery]]></category>
		<category><![CDATA[pyQuery]]></category>

		<guid isPermaLink="false">http://mifunny.info/work-with-php-but-dance-like-jquery-345.html</guid>
		<description><![CDATA[平时在PHP操作HTML时间吃力不讨好的事情， 虽然有“The DOMComment class”之类的神迹，但远不如javasript操作html来得快。 所以懒人们高出一个 phpQuery， 像JQuery一样操作HTML. &#60;?php include &#8216;phpQuery-onefile.php&#8217;; $doc = phpQuery::newDocumentHTML($html); echo $doc["head &#62; title"]-&#62;text(); ?&#62; 注意： 看了源码，第二个参数可以指定编码。（utf8、gbk&#8230;.） $html 必须是utf-8编码的，否则中文会出现乱码; phpQuery: http://code.google.com/p/phpquery/ python版 pyQuery： http://pypi.python.org/pypi/pyquery]]></description>
			<content:encoded><![CDATA[<p>平时在PHP操作HTML时间吃力不讨好的事情， 虽然有“The DOMComment class”之类的神迹，但远不如javasript操作html来得快。 所以懒人们高出一个 phpQuery， 像JQuery一样操作HTML.</p>
<blockquote style="font-style:normal"><p>&lt;?php<br />
include &#8216;phpQuery-onefile.php&#8217;;<br />
$doc = phpQuery::newDocumentHTML($html);</p>
<p>echo $doc["head &gt; title"]-&gt;text();<br />
?&gt;</p></blockquote>
<p><b>注意：</b> 看了源码，第二个参数可以指定编码。（utf8、gbk&#8230;.） <del datetime="2010-07-18T08:54:46+00:00">$html 必须是utf-8编码的，否则中文会出现乱码;</del><br />
<br />phpQuery: http://code.google.com/p/phpquery/<br />
<br />python版 pyQuery： http://pypi.python.org/pypi/pyquery</p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/work-with-php-but-dance-like-jquery-345.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>计算自然周 &#8211; YEARWEEK</title>
		<link>http://mifunny.info/hwo-to-get-natural-week-in-a-year-342.html</link>
		<comments>http://mifunny.info/hwo-to-get-natural-week-in-a-year-342.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 11:36:58 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[YEARWEEK]]></category>
		<category><![CDATA[自然周]]></category>

		<guid isPermaLink="false">http://mifunny.info/hwo-to-get-natural-week-in-a-year-342.html</guid>
		<description><![CDATA[自然周嘛，顾名思义，星期一是一周的第一天， 在MySQL中, 可以使用YEARWEEK函数获得: SELECT SQL_NO_CACHE yearweek( from_unixtime( unix_timestamp(&#8217;2010-06-16 19:13:01&#8242;)-86400 ) ) AS week; 结果是 201024 PHP中就稍稍有些麻烦了: &#160;1 &#60;?php &#160;2 &#160;3 $dateStr&#160;=&#160;&#8217;2010-06-16 19:13:01&#8216;; &#160;4 echo&#160;&#160;getYearWeek($dateStr); &#160;5 &#160;6 //获取自然周 &#160;7 function&#160;getYearWeek($dateStr){ &#160;8 &#160;&#160;&#160;&#160;$unixtime&#160;=&#160;strtotime($dateStr); &#160;9 &#160;&#160;&#160;&#160;$ym&#160;=&#160;strftime(&#8216;%Y%m&#8216;, $unixtime); 10 &#160;&#160;&#160;&#160;$w&#160;=&#160;strftime(&#8216;%V&#8216;, $unixtime); 11 &#160;&#160;&#160;&#160; 12 &#160;&#160;&#160;&#160;$y&#160;=&#160;substr($ym, 0, 4); 13 &#160;&#160;&#160;&#160;$m&#160;=&#160;substr($ym, 4, 2); 14 &#160;&#160;&#160;&#160;if(&#160;6&#62;(int)$m&#160;&#38;&#38;&#160;50&#60;$w&#160;){ 15 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$y&#160;=&#160;(int)$y&#160;-&#160;1; 16 &#160;&#160;&#160;&#160;} 17 &#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>自然周嘛，顾名思义，星期一是一周的第一天， 在MySQL中, 可以使用YEARWEEK函数获得: <br /> SELECT SQL_NO_CACHE yearweek( from_unixtime( unix_timestamp(&#8217;2010-06-16 19:13:01&#8242;)-86400 ) ) AS week;<br />
结果是 201024
</p>
<p>PHP中就稍稍有些麻烦了:</p>
<blockquote style="font-style:normal;color:#ffffff;background-color:#333333;"><p>
  <font color="#ffff00">&nbsp;1 </font><font color="#ff40ff">&lt;?php</font><br />
  <font color="#ffff00">&nbsp;2 </font><br />
  <font color="#ffff00">&nbsp;3 </font><font color="#ffff00">$</font><font color="#00ffff">dateStr</font>&nbsp;<font color="#ffff00">=</font>&nbsp;&#8217;<font color="#ffff00">2010-06-16 19:13:01</font>&#8216;<font color="#ff40ff">;</font><br />
  <font color="#ffff00">&nbsp;4 </font><font color="#ff40ff">echo</font>&nbsp;&nbsp;getYearWeek<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">dateStr</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">&nbsp;5 </font><br />
  <font color="#ffff00">&nbsp;6 </font><font color="#00ffff">//获取自然周</font><br />
  <font color="#ffff00">&nbsp;7 </font><font color="#ff40ff">function</font>&nbsp;getYearWeek<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">dateStr</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
  <font color="#ffff00">&nbsp;8 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">unixtime</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">strtotime</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">dateStr</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">&nbsp;9 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">ym</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">strftime</font><font color="#ff40ff">(</font>&#8216;<font color="#ffff00">%Y%m</font>&#8216;, <font color="#ffff00">$</font><font color="#00ffff">unixtime</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">10 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">w</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">strftime</font><font color="#ff40ff">(</font>&#8216;<font color="#ffff00">%V</font>&#8216;, <font color="#ffff00">$</font><font color="#00ffff">unixtime</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">11 </font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
  <font color="#ffff00">12 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">y</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">substr</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">ym</font>, <font color="#ffff00">0</font>, <font color="#ffff00">4</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">13 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">m</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">substr</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">ym</font>, <font color="#ffff00">4</font>, <font color="#ffff00">2</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">14 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">6</font><font color="#ffff00">&gt;</font><font color="#ff40ff">(</font><font color="#00ff00">int</font><font color="#ff40ff">)</font><font color="#ffff00">$</font><font color="#00ffff">m</font>&nbsp;<font color="#ffff00">&amp;&amp;</font>&nbsp;<font color="#ffff00">50</font><font color="#ffff00">&lt;</font><font color="#ffff00">$</font><font color="#00ffff">w</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
  <font color="#ffff00">15 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">y</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ff40ff">(</font><font color="#00ff00">int</font><font color="#ff40ff">)</font><font color="#ffff00">$</font><font color="#00ffff">y</font>&nbsp;<font color="#ffff00">-</font>&nbsp;<font color="#ffff00">1</font><font color="#ff40ff">;</font><br />
  <font color="#ffff00">16 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><br />
  <font color="#ffff00">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
  <font color="#ffff00">18 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">y</font><font color="#ffff00">.</font><font color="#ffff00">$</font><font color="#00ffff">w</font><font color="#ffff00">;</font><br />
  <font color="#ffff00">19 </font><font color="#ff40ff">}</font>
</p></blockquote>
<p>输出 201024 ; 如果需要计算自然周的第一天和最后一天，不妨参考taobao QA团队的文章:  <a rel="external" href="http://qa.taobao.com/?p=123">php 取得某个自然周的第一天和最后一天的方法</a>  </p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/hwo-to-get-natural-week-in-a-year-342.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP 大数自动转换为科学计数法的无耻问题</title>
		<link>http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html</link>
		<comments>http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html#comments</comments>
		<pubDate>Wed, 16 Jun 2010 11:00:41 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[precision]]></category>
		<category><![CDATA[sprintf]]></category>
		<category><![CDATA[大数]]></category>
		<category><![CDATA[科学计数法]]></category>

		<guid isPermaLink="false">http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html</guid>
		<description><![CDATA[前段时间碰到一个很头疼的问题，就是大于12位的数字在PHP中，会自动转成科学计数法表示。 比如 1234567891234 显示为 1.23456789123E+12 ， 最后只能在计算出大数之后，立即用 sprintf(&#8216;%1.0f&#8217;, $number) 来格式化。 奇怪的是，在我的Arch Linux上却不会自动转换， 只出现在生产机上， 郁闷ing. 上网搜了下， 有不少和我遇到相同问题的: [PHP] 大數運算問題 @ BJ の 狗窩 :: 痞客邦 PIXNET :: PHP大整数输出成科学计数法问题 解决方法: 在PHP配置文件 php.ini 中， 有一行 precision = 14 , 一般*nix上是14，windows上是12； 不过以防万一， 以后编码 但凡遇到12位以上的数字，都用sprintf格式化.]]></description>
			<content:encoded><![CDATA[<p>前段时间碰到一个很头疼的问题，就是大于12位的数字在PHP中，会自动转成科学计数法表示。 比如 1234567891234 显示为 1.23456789123E+12 ， 最后只能在计算出大数之后，立即用 sprintf(&#8216;%1.0f&#8217;, $number) 来格式化。</p>
<p>奇怪的是，在我的Arch Linux上却不会自动转换， 只出现在生产机上， 郁闷ing. 上网搜了下， 有不少和我遇到相同问题的:</p>
<p><a rel="external" href="http://bjstation.pixnet.net/blog/post/31048697">[PHP] 大數運算問題 @ BJ の 狗窩 :: 痞客邦 PIXNET ::</a><br />
<a rel="external" href="http://www.phpfans.net/blog/2/article/33.html">PHP大整数输出成科学计数法问题</a>
</p>
<p><b>解决方法:</b> 在PHP配置文件 php.ini 中， 有一行 precision = 14 , 一般*nix上是14，windows上是12； 不过以防万一， 以后编码 但凡遇到12位以上的数字，都用sprintf格式化.</p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/big-number-convert-to-scientific-notation-of-php-341.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3种PHP-CGI</title>
		<link>http://mifunny.info/run-php-as-cgi-339.html</link>
		<comments>http://mifunny.info/run-php-as-cgi-339.html#comments</comments>
		<pubDate>Sun, 25 Apr 2010 10:54:33 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[FPM]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[spawn-fcgi]]></category>

		<guid isPermaLink="false">http://mifunny.info/?p=339</guid>
		<description><![CDATA[PHP CGI 有3种形式： 最强悍的FPM, 功能最强大， 只要配置php-fpm.conf即可； fpm主页： http://php-fpm.org/ 使用 spawn-fcgi, 启动命令： env &#8211; PHP_FCGI_CHILDREN=3 PHP_FCGI_MAX_REQUESTS=1000 spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f php-cgi -P /var/run/spawn-fcgi.pid 使用时， 把www-data替换成自己的用户名和群组名； 参数含义如下: &#160;&#160;-f &#60;fcgiapp&#62; 指定调用FastCGI的进程的执行程序位置，根据系统上所装的PHP的情况具体设置 &#160;&#160;-a &#60;addr&#62; 绑定到地址addr &#160;&#160;-p &#60;port&#62; 绑定到端口port &#160;&#160;-s &#60;path&#62; 绑定到unix socket的路径path &#160;&#160;-C &#60;childs&#62; 指定产生的FastCGI的进程数，默认为5（仅用于PHP） &#160;&#160;-P &#60;path&#62; 指定产生的进程的PID文件路径 &#160;&#160;-u和-g FastCGI使用什么身份（-u 用户 -g 用户组）运行，Ubuntu下可以使用www-data，其他的根据情况配置，如nobody、apache等 [...]]]></description>
			<content:encoded><![CDATA[<p>PHP CGI 有3种形式：</p>
<ol style="list-style-type: upper-roman;">
<li> 最强悍的FPM, 功能最强大， 只要配置php-fpm.conf即可；<br /> <br />
  fpm主页： http://php-fpm.org/</li>
<li> 使用 spawn-fcgi, 启动命令： env &#8211; PHP_FCGI_CHILDREN=3 PHP_FCGI_MAX_REQUESTS=1000 spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f php-cgi -P /var/run/spawn-fcgi.pid<br /> <br />
  使用时， 把www-data替换成自己的用户名和群组名；</p>
<blockquote style="font-style:normal"><p>参数含义如下:<br />
&nbsp;&nbsp;-f &lt;fcgiapp&gt; 指定调用FastCGI的进程的执行程序位置，根据系统上所装的PHP的情况具体设置<br />
&nbsp;&nbsp;-a &lt;addr&gt; 绑定到地址addr<br />
&nbsp;&nbsp;-p &lt;port&gt; 绑定到端口port<br />
&nbsp;&nbsp;-s &lt;path&gt; 绑定到unix socket的路径path<br />
&nbsp;&nbsp;-C &lt;childs&gt; 指定产生的FastCGI的进程数，默认为5（仅用于PHP）<br />
&nbsp;&nbsp;-P &lt;path&gt; 指定产生的进程的PID文件路径<br />
&nbsp;&nbsp;-u和-g FastCGI使用什么身份（-u 用户 -g 用户组）运行，Ubuntu下可以使用www-data，其他的根据情况配置，如nobody、apache等<br />
&nbsp;&nbsp;&nbsp;&nbsp;然后我们可以将这行代码加入到/etc/rc.local文件底部，这样系统启动的时候也可以同时启动PHP的FastCGI进程。
</p></blockquote>
</li>
<li> 直接启动php-cgi， 使用命令： php-cgi -b 127.0.0.1:9000<br /> <br />
不过这时php-cgi是使用当前用户身份， 执行session等相关操作会出错， 如果web用户(如ubuntu下的www-data)是可以登录的， 则使用命令： su www-data -l -c &#8220;php-cgi -b 127.0.0.1:9000&#8243;<br /> <br />
如果www-data不能登录(bash位/bin/false), 那么直接修改用户权限，<br /> <br />
&nbsp;&nbsp;&nbsp;&nbsp;sudo chown www-data:www-data which php-cgi<br />
&nbsp;&nbsp;&nbsp;&nbsp;sudo chmod u+s which php-cgi
</li>
</ol>
<p> </p>
<p>BTW： 近段时间看ZF手册，开头有这么一句： 对于只包含有 PHP 代码的文件，结束标志（&#8221;?&gt;&#8221;）是不允许存在的，PHP自身不需要（&#8221;?&gt;&#8221;）, 这样做, 可以防止它的末尾的被意外地注入相应。 晕倒～～ 我这会儿才知道有这茬</p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/run-php-as-cgi-339.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP 几种注释的区别</title>
		<link>http://mifunny.info/diff-remark-in-php-333.html</link>
		<comments>http://mifunny.info/diff-remark-in-php-333.html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 13:28:34 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Study notes]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[注释]]></category>

		<guid isPermaLink="false">http://mifunny.info/?p=333</guid>
		<description><![CDATA[注释程序不仅是coder的个人习惯, 更是责任的体现. 那么首先抛出一个实用技巧, 快速无痛注释PHP代码段: 使用/* */注释大段程序, 一旦代码中包含/* */的话, 注释会出错, 所以换个思路使用 if(0){ &#8230; } 更好, ^_^ 历害吧, 这个可是调试时的不败利器哦 严格意义上, PHP 有四种注释. 单行注释 # 与 // , 单行注释在PHP解释时,不予编译, 所以一般用于纪录一写不太重要的注释。多行注释 /* */, C语言风格, 多行注释将和程序一起编译, 所以会增大内存的占用。 文档注释 /** * &#8230; 文档注释 * &#8230; &#8230; */ 上面的形式即是文档注释, 可以理解成多行注释的加强版。如PHPDoc 这样的方案可以根据它自动生成文档。更多资料&#62;&#62; google 我常用标签: @author, @copyright, @example, @desc, @filesource, @see, @version, @param, @return [...]]]></description>
			<content:encoded><![CDATA[<p>注释程序不仅是coder的个人习惯, 更是责任的体现. </p>
<p>那么首先抛出一个实用技巧, <strong>快速无痛注释PHP代码段</strong>: 使用/* */注释大段程序, 一旦代码中包含/* */的话, 注释会出错, 所以换个思路使用 if(0){ &#8230;  } 更好, ^_^  历害吧, 这个可是调试时的不败利器哦 </p>
<p>严格意义上, PHP 有四种注释. 单行注释 # 与 // ,  单行注释在PHP解释时,不予编译, 所以一般用于纪录一写不太重要的注释。多行注释 /* */, C语言风格, 多行注释将和程序一起编译, 所以会增大内存的占用。</p>
<p><span id="more-333"></span><br />
<strong>文档注释</strong> </p>
<blockquote style="font-style:normal"><p>
  /**<br />
   * &#8230; 文档注释<br />
   * &#8230; &#8230;<br />
   */<br /> <br />
   上面的形式即是文档注释, 可以理解成多行注释的加强版。如PHPDoc 这样的方案可以根据它自动生成文档。更多资料&gt;&gt; google<br />
   我常用标签: @author, @copyright, @example, @desc, @filesource, @see, @version, @param, @return
 </p></blockquote>
<p>LD 习惯只用 // 和 文档注释. </p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/diff-remark-in-php-333.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>简单的PHP文件缓存测试</title>
		<link>http://mifunny.info/php-file-cache-test-325.html</link>
		<comments>http://mifunny.info/php-file-cache-test-325.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:42:22 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[文件缓存]]></category>

		<guid isPermaLink="false">http://mifunny.info/php-file-cache-test-325.html</guid>
		<description><![CDATA[LD 写过一个 DsCache, 当然, 现在集成在新框架中, 嘿嘿, 还是自己写的东…西…好用! 言归正传, 之前 QeePHP 论坛里曾出过这么一个传言, 那就是 phpdatafile 缓存方式速度极快, 老大还说, ta几乎可以和 xcache 匹敌. 于是 LD 杀到 qee 的svn中, look 一点源码. 其实所谓 phpdatafile, 关键在于 var_export , 那么普通php 文件缓存呢? serialize. 简单改写后, 测试了下. 大跌眼镜. 下面是 var_export 和 serialize 两种方式的速度差异(100W次)： Windows XP(xampp 1.7.1 &#8211; AMD Athlon(tm) II X2 240 Processor 2.8GHz, 1.75GB Mem) 下结果: [...]]]></description>
			<content:encoded><![CDATA[<p>LD 写过一个 DsCache, 当然, 现在集成在新框架中, 嘿嘿, 还是自己写的东…西…好用! </p>
<p> 言归正传, 之前 QeePHP 论坛里曾出过这么一个传言, 那就是 phpdatafile 缓存方式速度极快, 老大还说, ta几乎可以和 xcache 匹敌.  于是 LD 杀到 qee 的svn中, look 一点源码. 其实所谓 phpdatafile, 关键在于 var_export , 那么普通php 文件缓存呢?  serialize. 简单改写后, 测试了下. 大跌眼镜.</p>
<p>
<span id="more-325"></span></p>
<blockquote><p>
  <b>下面是 var_export 和 serialize 两种方式的速度差异(100W次)：</b></p>
<p>Windows XP(xampp 1.7.1 &#8211; AMD Athlon(tm) II X2 240 Processor 2.8GHz, 1.75GB Mem) 下结果:<br />
datafile ext Time: 768.691594839<br />
serialfile ext Time: 377.889446974
</p>
<p>RHEL, Linux 2.6.18-8.el5xen i386(Apache/2.2.3 (Unix) PHP/5.2.9 &#8211; AMD Athlon(tm) 64 X2 Dual Core Processor 3600+ 1.9GHz, 0.9GB Mem) 下结果:<br />
datafile ext Time: 255.446233988<br />
serialfile ext Time: 121.841640949
</p>
</blockquote>
<p style="font-size:1.2em;color:blue;">1. 代码文件</p>
<blockquote style="background:#333333;color:#ffffff;"><p>
<font color="#ffff00">&nbsp;1 </font><font color="#ff40ff">&lt;?php</font><br />
<font color="#ffff00">&nbsp;2 </font><font color="#00ffff">/**</font><br />
<font color="#ffff00">&nbsp;3 </font><font color="#00ffff">&nbsp;* PHP文件缓存(通过序列化存储, 支持对象缓存)</font><br />
<font color="#ffff00">&nbsp;4 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp; 时间判断使用 int filemtime&nbsp;&nbsp;( string $filename&nbsp;&nbsp;)</font><br />
<font color="#ffff00">&nbsp;5 </font><font color="#00ffff">&nbsp;*</font><br />
<font color="#ffff00">&nbsp;6 </font><font color="#00ffff">&nbsp;* @filesource serialfile.class.php</font><br />
<font color="#ffff00">&nbsp;7 </font><font color="#00ffff">&nbsp;* @package peck</font><br />
<font color="#ffff00">&nbsp;8 </font><font color="#00ffff">&nbsp;* @subpackage _cache</font><br />
<font color="#ffff00">&nbsp;9 </font><font color="#00ffff">&nbsp;* @version $id: 0.1, utf8, Tue Jan 26 14:02:27 CST 2010</font><br />
<font color="#ffff00">10 </font><font color="#00ffff">&nbsp;* @author LD King &lt;kldscs[at]gmail.com&gt;</font><br />
<font color="#ffff00">11 </font><font color="#00ffff">&nbsp;* @copyright Copyleft (D.) 2007 &#8211; 2009 MiFunny China Inc.</font><br />
<font color="#ffff00">12 </font><font color="#00ffff">&nbsp;* @link <a href="http://mifunny.info/">http://mifunny.info/</a></font><br />
<font color="#ffff00">13 </font><font color="#00ffff">&nbsp;* @example </font><br />
<font color="#ffff00">14 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp;&#8230; </font><br />
<font color="#ffff00">15 </font><font color="#00ffff">&nbsp;*/</font><br />
<font color="#ffff00">16 </font><font color="#00ff00">class</font>&nbsp;serialfile&nbsp;<font color="#00ff00">extends</font>&nbsp;_DsCache<font color="#00ff00">{</font><br />
<font color="#ffff00">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
<font color="#ffff00">18 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">/**</font><br />
<font color="#ffff00">19 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * 写入缓存</font><br />
<font color="#ffff00">20 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp; 缓存时间为0, 永不过期</font><br />
<font color="#ffff00">21 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *</font><br />
<font color="#ffff00">22 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @param string $id 缓存唯一标识ID</font><br />
<font color="#ffff00">23 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @param mixed $data 缓存内容</font><br />
<font color="#ffff00">24 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @param mixed $expiration 缓存时间,默认 int 900</font><br />
<font color="#ffff00">25 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; */</font><br />
<font color="#ffff00">26 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;set<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">id</font>, <font color="#ffff00">$</font><font color="#00ffff">data</font>, <font color="#ffff00">$</font><font color="#00ffff">expiration</font><font color="#ffff00">=</font><font color="#00ff00">null</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
<font color="#ffff00">27 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">path</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_path<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">id</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">28 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">file_put_contents</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">path</font>, &#8216;<font color="#ffff00">&lt;?php die(); ?&gt;</font>&#8216;<font color="#ffff00">.</font><font color="#00ffff">serialize</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">data</font><font color="#ff40ff">)</font>, <font color="#ffff00">LOCK_EX</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">29 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">clearstatcache</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">30 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#00ff00">true</font><font color="#ffff00">;</font><br />
<font color="#ffff00">31 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><br />
<font color="#ffff00">32 </font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
<font color="#ffff00">33 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">/**</font><br />
<font color="#ffff00">34 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * 读取缓存，失败或缓存撒失效时返回 false</font><br />
<font color="#ffff00">35 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *</font><br />
<font color="#ffff00">36 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @param string $id 缓存唯一标识ID</font><br />
<font color="#ffff00">37 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @param array $policy 配置数组</font><br />
<font color="#ffff00">38 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *</font><br />
<font color="#ffff00">39 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @return mixed</font><br />
<font color="#ffff00">40 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; */</font><br />
<font color="#ffff00">41 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;get<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">id</font>, <font color="#ffff00">$</font><font color="#00ffff">expiration</font><font color="#ffff00">=</font><font color="#00ff00">null</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
<font color="#ffff00">42 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">life_time</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">is_null</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">expiration</font><font color="#ff40ff">)</font>&nbsp;<font color="#ffff00">?</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_default_policy<font color="#ff40ff">[</font>'<font color="#ffff00">life_time</font>'<font color="#ff40ff">]</font>&nbsp;<font color="#ffff00">:</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">expiration</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">43 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">path</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_path<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">id</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">44 </font><br />
<font color="#ffff00">45 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#00ffff">is_file</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">path</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
<font color="#ffff00">46 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">life_time</font><font color="#ffff00">==</font><font color="#ffff00">0</font>&nbsp;<font color="#ffff00">OR</font><br />
<font color="#ffff00">47 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">(</font><font color="#00ffff">time</font><font color="#ff40ff">()</font><font color="#ffff00">-</font><font color="#00ffff">filemtime</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">path</font><font color="#ff40ff">))</font><font color="#ffff00">&lt;=</font><font color="#ffff00">$</font><font color="#00ffff">life_time</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br />
<font color="#ffff00">48 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#00ffff">unserialize</font><font color="#ff40ff">(</font>&nbsp;<font color="#00ffff">file_get_contents</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">path</font>,<font color="#00ff00">NULL</font>,<font color="#00ff00">NULL</font>,<font color="#ffff00">15</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ffff00">;</font>&nbsp;&nbsp; <br />
<font color="#ffff00">49 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><font color="#ffff00">else</font><br />
<font color="#ffff00">50 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#00ff00">false</font><font color="#ffff00">;</font><br />
<font color="#ffff00">51 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><font color="#ffff00">else</font><br />
<font color="#ffff00">52 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#00ff00">false</font><font color="#ffff00">;</font><br />
<font color="#ffff00">53 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><br />
<font color="#ffff00">54 </font>&nbsp;&nbsp;&nbsp;&nbsp;<br />
<font color="#ffff00">55 </font><font color="#00ff00">}</font><font color="#00ffff">//END class seriafile</font><br />
<font color="#ffff00">56 </font><font color="#ff40ff">?&gt;</font>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/php-file-cache-test-325.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>按照自己的方式，去度过人生!</title>
		<link>http://mifunny.info/a-life-just-for-me-324.html</link>
		<comments>http://mifunny.info/a-life-just-for-me-324.html#comments</comments>
		<pubDate>Thu, 28 Jan 2010 13:08:08 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[Google热榜]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[Study notes]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[かわいい玩具]]></category>
		<category><![CDATA[一半动漫]]></category>
		<category><![CDATA[听听音乐]]></category>
		<category><![CDATA[吹水唬滥]]></category>
		<category><![CDATA[大佛Linux]]></category>
		<category><![CDATA[就评电影]]></category>
		<category><![CDATA[心情札记]]></category>
		<category><![CDATA[时事快评]]></category>
		<category><![CDATA[本民经济]]></category>
		<category><![CDATA[此间Web]]></category>
		<category><![CDATA[漫谈人物]]></category>
		<category><![CDATA[版本控制]]></category>
		<category><![CDATA[疮痍广告]]></category>
		<category><![CDATA[百度风云榜]]></category>
		<category><![CDATA[设计模式]]></category>
		<category><![CDATA[读书时间]]></category>
		<category><![CDATA[软件笑谈]]></category>
		<category><![CDATA[那些技术]]></category>
		<category><![CDATA[人生]]></category>

		<guid isPermaLink="false">http://mifunny.info/a-life-just-for-me-324.html</guid>
		<description><![CDATA[昨晚11点, 第三次读完《明朝那些事儿》, 彻夜未眠. LD 并不是个聪明的人, 前两次均未理解所谓历史 所谓宿命 所谓自由. 这半年, 从09年9月, 第三次读《明》, 完全不同的感受, 石悅的历史观也许是悲观的, 正如他如是说. 然, LD 是悲愤的! 可以活得唯唯缩缩, 可以轰轰烈烈, 也可平平淡淡, 人之所以为人, 就是与别个不同. 10月, LD 曾慕名前往于谦祠, 旁边帅GG 惊呼: 于谦? 谁啊? 好像以前学过&#8230; 是啊~ 我也是. 强人只是那么一瞬间, 那一刻 绽放比凡人璀璨的花火, 之后殒灭为尘秽, 清澈、汙浊平凡无异. 生活的目标 一点足矣, 开心. 礼义廉耻 忠义孝廉 儿戏 儿戏, 二十几年来, 从没有这么坚定, 从没有这么澄净. 引用《火鳳燎原》中那句话: 属于我的这个年代, 将比任何朝代来得久远!]]></description>
			<content:encoded><![CDATA[<p>昨晚11点, 第三次读完《明朝那些事儿》, 彻夜未眠. </p>
<p>LD 并不是个聪明的人, 前两次均未理解所谓历史 所谓宿命 所谓自由. 这半年, 从09年9月, 第三次读《明》, 完全不同的感受, 石悅的历史观也许是悲观的, 正如他如是说. 然, LD 是悲愤的! </p>
<p>可以活得唯唯缩缩, 可以轰轰烈烈, 也可平平淡淡, 人之所以为人, 就是与别个不同. 10月, LD 曾慕名前往于谦祠, 旁边帅GG 惊呼: 于谦? 谁啊? 好像以前学过&#8230;  是啊~ 我也是. 强人只是那么一瞬间, 那一刻 绽放比凡人璀璨的花火, 之后殒灭为尘秽, 清澈、汙浊平凡无异.</p>
<p>生活的目标 一点足矣, 开心. 礼义廉耻 忠义孝廉 儿戏 儿戏, 二十几年来, 从没有这么坚定, 从没有这么澄净. 引用《火鳳燎原》中那句话: 属于我的这个年代, 将比任何朝代来得久远!</p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/a-life-just-for-me-324.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP容易被人忽略的10件事</title>
		<link>http://mifunny.info/10-piece-could-be-ignore-for-php-323.html</link>
		<comments>http://mifunny.info/10-piece-could-be-ignore-for-php-323.html#comments</comments>
		<pubDate>Sun, 24 Jan 2010 12:35:40 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[10件事]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[忽略]]></category>

		<guid isPermaLink="false">http://mifunny.info/10-piece-could-be-ignore-for-php-323.html</guid>
		<description><![CDATA[1.使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一（char(15) 的 15 个字节对整形的 4 个字节），计算一个特定的地址是不是在一个区段内页更简单了，而且加快了搜索和排序的速度（虽然有时仅仅是快了一点）。 2.在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数，这个函数基于 checkdnsrr()，用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们，这个方法可以很方便的抓住他们。 3.如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本，考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句，如果你在维护一个数据库密集型站点，这个功能能够加快查询速度。一些评估分数。 4.学会爱上三元运算符。 5.如果你在项目中感觉到有可复用的部分，在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库，虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段，这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的，你总能找到帮你节省时间的 PEAR 包。（参见 PECL） 6.用 highlight_file() [...]]]></description>
			<content:encoded><![CDATA[<p><b>1.</b>使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。这种方法把存储空间降到了接近四分之一（char(15) 的 15 个字节对整形的 4 个字节），计算一个特定的地址是不是在一个区段内页更简单了，而且加快了搜索和排序的速度（虽然有时仅仅是快了一点）。</p>
<p><b>2.</b>在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数，这个函数基于 checkdnsrr()，用来验证 email 地址的合法性。对于那些认为自己的 email 地址是 “joeuser@wwwphp.net” 而不是 “joeuser@php.net” 的家伙们，这个方法可以很方便的抓住他们。</p>
<p><span id="more-323"></span></p>
<p><b>3.</b>如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本，考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。一个很好的功能就是你可以使用预处理语句，如果你在维护一个数据库密集型站点，这个功能能够加快查询速度。一些评估分数。</p>
<p><b>4.</b>学会爱上三元运算符。</p>
<p><b>5.</b>如果你在项目中感觉到有可复用的部分，在你写下一行代码前先看看 PEAR 中是否已经有了。很多 PHP 程序员都知道 PEAR 是一个很好的资源库，虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段，这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的，你总能找到帮你节省时间的 PEAR 包。（参见 PECL）</p>
<p><b>6.</b>用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话，这个函数用起来非常的顺手。当然了，要小心不要意外的泄露出你的数据库连接信息和密码等。</p>
<p><b>7.</b>使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。]在理想情况下，发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话，你没有自己的 php.ini 文件，那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);（或者使用 require_once() 方法）。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。</p>
<p><b>8.</b>在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。这个 PHP 内置函数使用 gzip 算法，可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。</p>
<p><b>9.</b>通过“引用”传递参数的方法从一个函数中得到多个返回值。就像三元运算符一样，大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下，从一个函数里返回多个值？”答案就是在变量前加上一个 “&#038;” 符号，通过“引用”传递而非“值”传递。</p>
<p><b>10.</b>完全理解“魔术引号”和 SQL 注入的危险性。我希望阅读到这里的开发者都已经很对 SQL 注入和了解了。不过我还是把这条列在这里，是因为这个确实有点难以理解。如果你还没有听说过这种说法，那么把今天剩下的时间都用来 Google、阅读吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/10-piece-could-be-ignore-for-php-323.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简单实用的PHP模板引擎 DsTemplate</title>
		<link>http://mifunny.info/php-dstemplate-engine-320.html</link>
		<comments>http://mifunny.info/php-dstemplate-engine-320.html#comments</comments>
		<pubDate>Sat, 02 Jan 2010 09:53:32 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DsTemplate]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[template engine]]></category>
		<category><![CDATA[原生态php]]></category>
		<category><![CDATA[模板引擎]]></category>

		<guid isPermaLink="false">http://mifunny.info/php-dstemplate-engine-320.html</guid>
		<description><![CDATA[昨天花了点时间写了个PHP的模板类, 自我感觉良好, 模板中使用php原生语法, 简单、实用、快速. 嘿嘿,源码+注释不到150行, 原来我已经到这里了阿~_~ LD 是极其痛恨 Smarty 和 ADOdb 的! 以前在公司简单作过测试, 一个页面八成的时间花在这两个大腕上, 惨. 这个DsTemplate + MagicDB + DsCache 应该可以完美替代 Smarty + ADOdb 的无耻组合了. 有种说法不置可否, &#8220;php 自己就是一个模板引擎&#8221; OR &#8220;php 的框架不过是建里在框架上的框架&#8221; . so 以其使用Smarty , 不如改用Blitz , 或者干脆自己写个简单的. 源代码地址: http://code.google.com/p/dscache/source/browse/trunk/DsTemplate/DsTemplate.class.php 示例: 1. 代码文件 &#160;1 &#60;?php &#160;2 /** &#160;3 &#160;* 测试DsTemplate &#160;4 &#160;* &#160;5 &#160;* @filesource [...]]]></description>
			<content:encoded><![CDATA[<p>昨天花了点时间写了个PHP的模板类, 自我感觉良好, 模板中使用php原生语法, 简单、实用、快速. 嘿嘿,源码+注释不到150行, 原来我已经到这里了阿~_~</p>
<p>LD 是极其痛恨 Smarty 和 ADOdb 的! 以前在公司简单作过测试, 一个页面八成的时间花在这两个大腕上, 惨. 这个DsTemplate + MagicDB + DsCache 应该可以完美替代 Smarty + ADOdb 的无耻组合了. </p>
<p>有种说法不置可否, &#8220;php 自己就是一个模板引擎&#8221; OR &#8220;php 的框架不过是建里在框架上的框架&#8221; . so 以其使用Smarty , 不如改用Blitz , 或者干脆自己写个简单的.</p>
<p>源代码地址: <a href="http://code.google.com/p/dscache/source/browse/trunk/DsTemplate/DsTemplate.class.php" title="DsTemple 简单的PHP模板引擎">http://code.google.com/p/dscache/source/browse/trunk/DsTemplate/DsTemplate.class.php</a><br />
<span id="more-320"></span><br />
示例:</p>
<p style="font-size:1.2em;color:blue;">1. 代码文件</p>
<blockquote style="background:#333333;color:#ffffff;"><p>
<font color="#ffff00">&nbsp;1 </font><font color="#ff40ff">&lt;?php</font><br />
<font color="#ffff00">&nbsp;2 </font><font color="#00ffff">/**</font><br />
<font color="#ffff00">&nbsp;3 </font><font color="#00ffff">&nbsp;* 测试DsTemplate </font><br />
<font color="#ffff00">&nbsp;4 </font><font color="#00ffff">&nbsp;*</font><br />
<font color="#ffff00">&nbsp;5 </font><font color="#00ffff">&nbsp;* @filesource testView.php</font><br />
<font color="#ffff00">&nbsp;6 </font><font color="#00ffff">&nbsp;* @package DsTemplate</font><br />
<font color="#ffff00">&nbsp;7 </font><font color="#00ffff">&nbsp;* @subpackage test</font><br />
<font color="#ffff00">&nbsp;8 </font><font color="#00ffff">&nbsp;* @version $id: 0.1, utf8, Sat Jan&nbsp;&nbsp;2 16:39:27 CST 2010</font><br />
<font color="#ffff00">&nbsp;9 </font><font color="#00ffff">&nbsp;* @author LD King &lt;kldscs[at]gmail.com&gt;</font><br />
<font color="#ffff00">10 </font><font color="#00ffff">&nbsp;* @copyright Copyleft (D.) 2007 &#8211; 2009 MiFunny China Inc.</font><br />
<font color="#ffff00">11 </font><font color="#00ffff">&nbsp;* @link <a href="http://mifunny.info/">http://mifunny.info/</a></font><br />
<font color="#ffff00">12 </font><font color="#00ffff">&nbsp;* @example </font><br />
<font color="#ffff00">13 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp; </font><br />
<font color="#ffff00">14 </font><font color="#00ffff">&nbsp;*/</font><br />
<font color="#ffff00">15 </font><font color="#ff40ff">require_once</font>&nbsp;&#8217;<font color="#ffff00">../DsTemplate.class.php</font>&#8216;<font color="#ff40ff">;</font><br />
<font color="#ffff00">16 </font><br />
<font color="#ffff00">17 </font><font color="#ffff00">$</font><font color="#00ffff">template_path</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">dirname</font><font color="#ff40ff">(</font><font color="#ffff00">__FILE__</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font>&nbsp;&nbsp;<font color="#00ffff">//模板文件所在目录</font><br />
<font color="#ffff00">18 </font><font color="#ffff00">$</font><font color="#00ffff">template_file</font>&nbsp;<font color="#ffff00">=</font>&nbsp;&#8217;<font color="#ffff00">testTemplate01.php</font>&#8216;<font color="#ff40ff">;</font>&nbsp;<font color="#00ffff">//模板文件</font><br />
<font color="#ffff00">19 </font><br />
<font color="#ffff00">20 </font><font color="#ffff00">$</font><font color="#00ffff">view</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ff40ff">new</font>&nbsp;DsTemplate<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template_path</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font>&nbsp;<font color="#00ffff">//初始化模板对象, $template_path 可为空</font><br />
<font color="#ffff00">21 </font><br />
<font color="#ffff00">22 </font><font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>TEMPLATEPATH&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">template_path</font><font color="#ff40ff">;</font>&nbsp;<font color="#00ffff">//重新定义模板目录, 可选</font><br />
<font color="#ffff00">23 </font><br />
<font color="#ffff00">24 </font><font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>abc&nbsp;<font color="#ffff00">=</font>&nbsp;&#8217;<font color="#ffff00">ABC</font>&#8216;<font color="#ff40ff">;</font><br />
<font color="#ffff00">25 </font><font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>king&nbsp;<font color="#ffff00">=</font>&nbsp;&#8217;<font color="#ffff00">King</font><font color="#ff40ff">\&#8217;</font><font color="#ffff00">s Zero Fourr</font>&#8216;<font color="#ff40ff">;</font>&nbsp;<font color="#00ffff">//设置变量 $abc, $king</font><br />
<font color="#ffff00">26 </font><br />
<font color="#ffff00">27 </font><font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>display<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template_file</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font>&nbsp;<font color="#00ffff">//显示最终结果, </font><br />
<font color="#ffff00">28 </font><font color="#00ffff">//等同 echo $view-&gt;fetch($template_file);</font><br />
<font color="#ffff00">29 </font><font color="#ff40ff">?&gt;</font>
</p></blockquote>
<p style="font-size:1.2em;color:blue;">2. 视图文件</p>
<blockquote style="background:#333333;color:#ffffff;"><p>
<font color="#ffff00">&nbsp;1 </font><font color="#ff40ff">&lt;?php</font><br />
<font color="#ffff00">&nbsp;2 </font><font color="#00ffff">/**</font><br />
<font color="#ffff00">&nbsp;3 </font><font color="#00ffff">&nbsp;* 用于测试的模板文件</font><br />
<font color="#ffff00">&nbsp;4 </font><font color="#00ffff">&nbsp;*</font><br />
<font color="#ffff00">&nbsp;5 </font><font color="#00ffff">&nbsp;* @filesource testTemplate01.php</font><br />
<font color="#ffff00">&nbsp;6 </font><font color="#00ffff">&nbsp;* @package DsTemplate</font><br />
<font color="#ffff00">&nbsp;7 </font><font color="#00ffff">&nbsp;* @subpackage test</font><br />
<font color="#ffff00">&nbsp;8 </font><font color="#00ffff">&nbsp;* @version $id: 0.1, utf8, Sat Jan&nbsp;&nbsp;2 16:52:03 CST 2010</font><br />
<font color="#ffff00">&nbsp;9 </font><font color="#00ffff">&nbsp;* @author LD King &lt;kldscs[at]gmail.com&gt;</font><br />
<font color="#ffff00">10 </font><font color="#00ffff">&nbsp;* @copyright Copyleft (D.) 2007 &#8211; 2009 MiFunny China Inc.</font><br />
<font color="#ffff00">11 </font><font color="#00ffff">&nbsp;* @link <a href="http://mifunny.info/">http://mifunny.info/</a></font><br />
<font color="#ffff00">12 </font><font color="#00ffff">&nbsp;* @desc</font><br />
<font color="#ffff00">13 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp; 模板中含有两个常量:</font><br />
<font color="#ffff00">14 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp; TP 模板根目录, 例 /srv/http/site/templates/</font><br />
<font color="#ffff00">15 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp; DS 目录分隔符, Windows下为 &#8216;\&#8217; ,Linux下为 &#8216;/&#8217;</font><br />
<font color="#ffff00">16 </font><font color="#00ffff">&nbsp;*&nbsp;&nbsp; </font><br />
<font color="#ffff00">17 </font><font color="#00ffff">&nbsp;*/</font><br />
<font color="#ffff00">18 </font><br />
<font color="#ffff00">19 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">echo</font>&nbsp;&#8217;<font color="#ffff00">Start showing&#8230;.&lt;br/&gt;</font>&#8216;<font color="#ff40ff">,</font>_e<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">abc</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">20 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">include</font><font color="#ff40ff">(</font>TP<font color="#ffff00">.</font>&#8216;<font color="#ffff00">testTemplate02.php</font>&#8216;<font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">21 </font><font color="#ff40ff">?&gt;</font><br />
<font color="#ffff00">22 </font><font color="#00ffff">&lt;</font><font color="#ffff00">hr</font><font color="#00ffff">/&gt;</font><br />
<font color="#ffff00">23 </font><font color="#00ffff">&lt;</font><font color="#ffff00">br</font><font color="#00ffff">/&gt;</font>包含其他模板时,多目录用: include(TP.&#8217;sidebar&#8217;.DS.&#8217;testSidebar.php&#8217;);
</p></blockquote>
<p style="font-size:1.2em;color:blue;">3. 视图文件</p>
<blockquote style="background:#333333;color:#ffffff;"><p>
<font color="#ffff00">&nbsp;1 </font><font color="#00ffff">&lt;</font><font color="#ffff00">hr</font><font color="#00ffff">/&gt;</font><br />
<font color="#ffff00">&nbsp;2 </font>/**<br />
<font color="#ffff00">&nbsp;3 </font>&nbsp;*&nbsp;&nbsp;测试模板<br />
<font color="#ffff00">&nbsp;4 </font>&nbsp;*<br />
<font color="#ffff00">&nbsp;5 </font>&nbsp;* @filesource testTemplate02.php<br />
<font color="#ffff00">&nbsp;6 </font>&nbsp;* @package DsTemplate<br />
<font color="#ffff00">&nbsp;7 </font>&nbsp;* @subpackage test<br />
<font color="#ffff00">&nbsp;8 </font>&nbsp;* @version $id: 0.1, utf8, Sat Jan&nbsp;&nbsp;2 17:00:46 CST 2010<br />
<font color="#ffff00">&nbsp;9 </font>&nbsp;* @author LD King <font color="#00ffff">&lt;</font>kldscs<font color="#00ffff">[at]gmail.com&gt;</font><br />
<font color="#ffff00">10 </font>&nbsp;* @copyright Copyleft (D.) 2007 &#8211; 2009 MiFunny China Inc.<br />
<font color="#ffff00">11 </font>&nbsp;* @link <a href="http://mifunny.info/">http://mifunny.info/</a><br />
<font color="#ffff00">12 </font>&nbsp;* @example <br />
<font color="#ffff00">13 </font>&nbsp;*&nbsp;&nbsp; <br />
<font color="#ffff00">14 </font>&nbsp;*/<br />
<font color="#ffff00">15 </font><font color="#ff40ff">&lt;?php</font><br />
<font color="#ffff00">16 </font>&nbsp;&nbsp;<font color="#ff40ff">echo</font>&nbsp;&#8217;<font color="#ffff00">&lt;br/&gt;&lt;br/&gt;输出函数 _e($value, $escape) 可以完成自动转义, </font>&#8216;<font color="#ff40ff">,</font><br />
<font color="#ffff00">17 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8217;<font color="#ffff00">&lt;br/&gt;比如: _e($king) = </font>&#8216;<font color="#ff40ff">,</font>_e<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">king</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br />
<font color="#ffff00">18 </font><font color="#ff40ff">?&gt;</font>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/php-dstemplate-engine-320.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>原来提交AUR这么简单哈</title>
		<link>http://mifunny.info/submit-blitz-to-aur-318.html</link>
		<comments>http://mifunny.info/submit-blitz-to-aur-318.html#comments</comments>
		<pubDate>Sun, 27 Dec 2009 09:31:08 +0000</pubDate>
		<dc:creator>LD</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[大佛Linux]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[aur]]></category>
		<category><![CDATA[blitz]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://mifunny.info/submit-blitz-to-aur-318.html</guid>
		<description><![CDATA[话说用了这么久Arch Linux, 也没啥贡献, 昨日发现AUR上还没有人维护 Blitz 的包, 那么偶就代劳了. 把PKGBUILD脚本提交AUR太简单, 选择文件、上传, 其余全自动的, 真方便. PS: 本来忘了AUR密码的, 网站维护者估计也看穿了偶蹩脚的engilsh, 给我reset一个&#8221;常用测试密码&#8221;, 囧. 小常识: Blitz Blitz 是一个极快的PHP模板引擎, 根据官方测试比 C++ 的 Google cTemplate 都快! 锋利异常,吹毛断发. package for Arch Linux: http://aur.archlinux.org/packages.php?ID=33179]]></description>
			<content:encoded><![CDATA[<p>话说用了这么久Arch Linux, 也没啥贡献, 昨日发现AUR上还没有人维护 <a href="http://alexeyrybak.com/blitz/blitz_en.html" title="最快的PHP模板引擎">Blitz</a> 的包, 那么偶就代劳了. </p>
<p>把PKGBUILD脚本提交AUR太简单, 选择文件、上传, 其余全自动的, 真方便.  PS: 本来忘了AUR密码的, 网站维护者估计也看穿了偶蹩脚的engilsh, 给我reset一个&#8221;常用测试密码&#8221;, 囧.</p>
<p>小常识:<strong> Blitz </strong><br />
<span id="more-318"></span></p>
<p>Blitz 是一个极快的PHP模板引擎, 根据官方测试比 C++ 的 Google cTemplate 都快! 锋利异常,吹毛断发. </p>
<div class="wp-caption aligncenter" style="width: 532px"><img alt="blitz" src="http://mifunny.info/blog/uploads/2009/12/lebowski-bench-small.gif" width="522" /><p class="wp-caption-text">Blitz 测试图</p></div>
<p>package for Arch Linux: <a href="http://aur.archlinux.org/packages.php?ID=33179">http://aur.archlinux.org/packages.php?ID=33179</a></p></p>
]]></content:encoded>
			<wfw:commentRss>http://mifunny.info/submit-blitz-to-aur-318.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

