<?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>程序员 in the house &#187; PHP</title>
	<atom:link href="http://blog.thinklet.net/franky/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thinklet.net/franky</link>
	<description>跳街舞比我劲的，写程序没我历害；写程序比我历害的，跳街舞比不上我。</description>
	<lastBuildDate>Sun, 18 Apr 2010 16:20:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用Xdebug深入调试PHP</title>
		<link>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/</link>
		<comments>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 15:24:56 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=174</guid>
		<description><![CDATA[Xdebug功能简介
Xdebug是PHP的一个插件(zend_extension)。主页：http://www.xdebug.org/。它提供大供php的调试信息。主要包含以下内容：

在错误信息中提供 层级跟踪 并且 功能跟踪。

为用户定义的函数展现全部参数
展现函数名，文件名，代码行数
支持成员函数


内存分配
防止死循环
PHP脚本的概况分析
代码覆盖范围分析
能够通过客户端软件调试PHP脚本

其中1,2,3是Xdebug默认提供的功能。只要启用了Xdebug就可以使用了。
如何使用PHP脚本的概况分析功能？
xdebug.profiler_enable 设为On，默认为Off


]]></description>
			<content:encoded><![CDATA[<p><strong>Xdebug功能简介</strong></p>
<p>Xdebug是PHP的一个插件(zend_extension)。主页：<a href="http://www.xdebug.org/">http://www.xdebug.org/</a>。它提供大供php的调试信息。主要包含以下内容：</p>
<ol>
<li>在错误信息中提供 层级跟踪 并且 功能跟踪。
<ul>
<li>为用户定义的函数展现全部参数</li>
<li>展现函数名，文件名，代码行数</li>
<li>支持成员函数</li>
</ul>
</li>
<li>内存分配</li>
<li>防止死循环</li>
<li>PHP脚本的概况分析</li>
<li>代码覆盖范围分析</li>
<li>能够通过客户端软件调试PHP脚本</li>
</ol>
<p>其中1,2,3是Xdebug默认提供的功能。只要启用了Xdebug就可以使用了。</p>
<p><strong><span style="font-weight: normal">如何使用PHP脚本的概况分析功能？</span></strong></p>
<p><strong><span style="font-weight: normal"><a href="http://www.xdebug.org/docs/all_settings#profiler_enable">xdebug.profiler_enable</a> 设为On，默认为Off</span></strong></p>
<p><strong><span style="font-weight: normal"><br />
</span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/02/23/shiyongxdebugshenrudiaoshiphp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下的time 命令</title>
		<link>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/</link>
		<comments>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:00:27 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=169</guid>
		<description><![CDATA[time命令在测试程序效率的时候很有用，也很方便。
它以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。
例如：
说明
执行命令行”command [arguments...]“，命令行执行结束时在标准输出中打印执行该命令行的时间统计结果，其统计结果包含以下数据：
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间；
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间，即命令在用户态中执行时间总和；
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间，即命令在核心态中执行时间总和。
其中，用户CPU时间和系统CPU时间之和为CPU时间，即命令占用CPU执行的时间总和。实际时间要大于CPU时间，因为Linux是多任务操作系统，往往在执行一条命令时，系统还要处理其它任务。
另一个需要注意的问题是即使每次执行相同命令，但所花费的时间也是不一样，其花费时间是与系统运行相关的。
例1：
1. # time date
2. Sun Mar 26 22:45:34 GMT-8 2006
3.
4. real    0m0.136s
5. user    0m0.010s
6. sys     0m0.070s
7. #
在例1中，执行命令”time date”(见第1行)。系统先执行命令”date”，第2行为命令”date”的执行结果。第3-6行为执行命令”date”的时间统计结果，其中第4 行”real”为实际时间，第5行”user”为用户CPU时间，第6行”sys”为系统CPU时间。以上三种时间的显示格式均为 MMmNN[.FFF]s。
在例1中，CPU时间 = 用户CPU时间 + 系统CPU时间 = 0m0.010s + 0m0.070s = 0m0.080s，实际时间大于CPU时间，说明在date命令运行的同时，还有其它任务在运行.
time命令还可以拿测试php等脚本效率。
例如：time php test.php
]]></description>
			<content:encoded><![CDATA[<p>time命令在测试程序效率的时候很有用，也很方便。</p>
<p>它以秒为单位将一条命令执行期间所用的时间、系统时间和 time 命令的执行时间打印在标准错误中。<br />
例如：<br />
说明<br />
执行命令行”command [arguments...]“，命令行执行结束时在标准输出中打印执行该命令行的时间统计结果，其统计结果包含以下数据：<br />
1)实际时间(real time): 从command命令行开始执行到运行终止的消逝时间；<br />
2)用户CPU时间(user CPU time): 命令执行完成花费的用户CPU时间，即命令在用户态中执行时间总和；<br />
3)系统CPU时间(system CPU time): 命令执行完成花费的系统CPU时间，即命令在核心态中执行时间总和。<br />
其中，用户CPU时间和系统CPU时间之和为CPU时间，即命令占用CPU执行的时间总和。实际时间要大于CPU时间，因为Linux是多任务操作系统，往往在执行一条命令时，系统还要处理其它任务。<br />
另一个需要注意的问题是即使每次执行相同命令，但所花费的时间也是不一样，其花费时间是与系统运行相关的。<br />
例1：<br />
1. # time date<br />
2. Sun Mar 26 22:45:34 GMT-8 2006<br />
3.<br />
4. real    0m0.136s<br />
5. user    0m0.010s<br />
6. sys     0m0.070s<br />
7. #<br />
在例1中，执行命令”time date”(见第1行)。系统先执行命令”date”，第2行为命令”date”的执行结果。第3-6行为执行命令”date”的时间统计结果，其中第4 行”real”为实际时间，第5行”user”为用户CPU时间，第6行”sys”为系统CPU时间。以上三种时间的显示格式均为 MMmNN[.FFF]s。<br />
在例1中，CPU时间 = 用户CPU时间 + 系统CPU时间 = 0m0.010s + 0m0.070s = 0m0.080s，实际时间大于CPU时间，说明在date命令运行的同时，还有其它任务在运行.</p>
<p>time命令还可以拿测试php等脚本效率。<br />
例如：time php test.php</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2010/01/10/linuxxiadetimemingling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何在CAKEPHP应用中嵌套另一个CAKEPHP应用 &#8211; TAPD3新版本的部署方案</title>
		<link>http://blog.thinklet.net/franky/2009/04/02/%e5%a6%82%e4%bd%95%e5%9c%a8cakephp%e5%ba%94%e7%94%a8%e4%b8%ad%e5%b5%8c%e5%a5%97%e5%8f%a6%e4%b8%80%e4%b8%aacakephp%e5%ba%94%e7%94%a8-tapd32%e7%9a%84%e9%83%a8%e7%bd%b2%e6%96%b9%e6%a1%88/</link>
		<comments>http://blog.thinklet.net/franky/2009/04/02/%e5%a6%82%e4%bd%95%e5%9c%a8cakephp%e5%ba%94%e7%94%a8%e4%b8%ad%e5%b5%8c%e5%a5%97%e5%8f%a6%e4%b8%80%e4%b8%aacakephp%e5%ba%94%e7%94%a8-tapd32%e7%9a%84%e9%83%a8%e7%bd%b2%e6%96%b9%e6%a1%88/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 16:17:48 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[LAMP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[技术运营]]></category>
		<category><![CDATA[cakephp;php;lamp]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=92</guid>
		<description><![CDATA[我们的tapd3新版本(一个CAKEPHP应用)要发布了，但是由于某原因不能代替现有的老版本(另一个CAKEPHP应用)。两个版本必须并存。但域名只有一个（tapd3.oa.com），并且已经被老版本占用着。
那么我们的tapd3新版本只能挂tapd3.oa.com的一个目录下了，目录就暂定为tapd3.oa.com/beta/吧。这样，访问http://tapd3.oa.com/beta时就是访问新版本，访问http://tapd.oa.com的话还是以前的老版本。
 
方案定下来了，动手进行配置。
注：下文出现的TAPD3_ROOT表示tapd3老版本（一个CAKEPHP应用）的根目录。
1.了解现有的设置：
    服务器: apache
    配置有虚拟主机：tapd3.oa.com；其DocumentRoot为TAPD3_ROOT/app/webroot；此目录已经打开AllowOverRide
2.设置虚拟主机的DocumentRoot.
把虚拟主机：tapd3.oa.com的DocumentRoot设为TAPD3_ROOT，这个并没有任何影响，效果跟值为TAPD3_ROOT/app/webroot时一样的。因为默认下CAKEPHP的根目录有这样的一个.htaccess文件。

RewriteEngine on
RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L]

这个文件的作用是把当前目录下的所有请求重定向到app/webroot/下面。
3.放入代码。
先把tapd3新版本的代码checkout一份到TAPD3_ROOT目录下（跟config/ controller/ model/ view/ 目录同一级），并以bata命名。
4.修改TAPD3_ROOT目录下的.htaccess文件。
如果Apache没有作其它配置的话，访问http://tapd3.oa.com/beta/时，请求数据应该就会到beta这个目录下面去找。但是CAKEPHP根目录，也就是我们的TAPD3_ROOT目录下面存在着第2步所说的这个.htaccess文件。把http://tapd3.oa.com/beta/这个请求的服务器数据路径被重定向到app/webroot下面去了，以致不能达到我们想要的效果。
这里要改动一下这个.htaccess文件，使访问http://tapd3.oa.com/beta/时，服务器还是去beta目录去查找数据。改变后的.htaccess文件如下：

RewriteEngine on
RewriteRule    ^$ app/webroot/    [L]
RewriteCond    ${REQUEST_URI} !beta    //这句表示请求uri不等于beta时，下面的重写命令才生效。
RewriteRule    (.*) app/webroot/$1 [L]

大功做成！
访问http://tapd3.oa.com还是原来的CAKEPHP应用；
访问http://tapd3.oa.com/bata/就是新的CAKEPHP应用啦。
]]></description>
			<content:encoded><![CDATA[<p>我们的tapd3新版本(一个CAKEPHP应用)要发布了，但是由于某原因不能代替现有的老版本(另一个CAKEPHP应用)。两个版本必须并存。但域名只有一个（tapd3.oa.com），并且已经被老版本占用着。</p>
<p>那么我们的tapd3新版本只能挂tapd3.oa.com的一个目录下了，目录就暂定为tapd3.oa.com/beta/吧。这样，访问http://tapd3.oa.com/beta时就是访问新版本，访问http://tapd.oa.com的话还是以前的老版本。</p>
<p> </p>
<p>方案定下来了，动手进行配置。<br />
注：下文出现的TAPD3_ROOT表示tapd3老版本（一个CAKEPHP应用）的根目录。</p>
<h4>1.了解现有的设置：</h4>
<p>    服务器: apache<br />
    配置有虚拟主机：tapd3.oa.com；其DocumentRoot为TAPD3_ROOT/app/webroot；此目录已经打开AllowOverRide</p>
<h4>2.设置虚拟主机的DocumentRoot.</h4>
<p>把虚拟主机：tapd3.oa.com的DocumentRoot设为TAPD3_ROOT，这个并没有任何影响，效果跟值为TAPD3_ROOT/app/webroot时一样的。因为默认下CAKEPHP的根目录有这样的一个.htaccess文件。<br />
<code><br />
RewriteEngine on<br />
RewriteRule    ^$ app/webroot/    [L]<br />
RewriteRule    (.*) app/webroot/$1 [L]<br />
</code><br />
这个文件的作用是把当前目录下的所有请求重定向到app/webroot/下面。</p>
<h4>3.放入代码。</h4>
<p>先把tapd3新版本的代码checkout一份到TAPD3_ROOT目录下（跟config/ controller/ model/ view/ 目录同一级），并以bata命名。</p>
<h4>4.修改TAPD3_ROOT目录下的.htaccess文件。</h4>
<p>如果Apache没有作其它配置的话，访问http://tapd3.oa.com/beta/时，请求数据应该就会到beta这个目录下面去找。但是CAKEPHP根目录，也就是我们的TAPD3_ROOT目录下面存在着第2步所说的这个.htaccess文件。把http://tapd3.oa.com/beta/这个请求的服务器数据路径被重定向到app/webroot下面去了，以致不能达到我们想要的效果。<br />
这里要改动一下这个.htaccess文件，使访问http://tapd3.oa.com/beta/时，服务器还是去beta目录去查找数据。改变后的.htaccess文件如下：<br />
<code><br />
RewriteEngine on<br />
RewriteRule    ^$ app/webroot/    [L]<br />
RewriteCond    ${REQUEST_URI} !beta    //这句表示请求uri不等于beta时，下面的重写命令才生效。<br />
RewriteRule    (.*) app/webroot/$1 [L]<br />
</code></p>
<p>大功做成！<br />
访问http://tapd3.oa.com还是原来的CAKEPHP应用；<br />
访问http://tapd3.oa.com/bata/就是新的CAKEPHP应用啦。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/04/02/%e5%a6%82%e4%bd%95%e5%9c%a8cakephp%e5%ba%94%e7%94%a8%e4%b8%ad%e5%b5%8c%e5%a5%97%e5%8f%a6%e4%b8%80%e4%b8%aacakephp%e5%ba%94%e7%94%a8-tapd32%e7%9a%84%e9%83%a8%e7%bd%b2%e6%96%b9%e6%a1%88/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>顶！Yahoo开发者中心推荐的PHP网站</title>
		<link>http://blog.thinklet.net/franky/2009/03/19/%e9%a1%b6%ef%bc%81yahoo%e5%bc%80%e5%8f%91%e8%80%85%e4%b8%ad%e5%bf%83%e6%8e%a8%e8%8d%90%e7%9a%84php%e7%bd%91%e7%ab%99/</link>
		<comments>http://blog.thinklet.net/franky/2009/03/19/%e9%a1%b6%ef%bc%81yahoo%e5%bc%80%e5%8f%91%e8%80%85%e4%b8%ad%e5%bf%83%e6%8e%a8%e8%8d%90%e7%9a%84php%e7%bd%91%e7%ab%99/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 14:37:06 +0000</pubDate>
		<dc:creator>frankychen</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.thinklet.net/franky/?p=85</guid>
		<description><![CDATA[很多好东西，一定要定阅啊！
 
General Information Links
www.php.net : Sector Zero-Zero of PHP  — the place to find definitive PHP documentation and news.
PHP Builder : A popular site with many PHP tutorials and code samples.
Sitepoint : Makers of fine books and tutorials on PHP and other Web development tools.
O&#8217;Reilly and Associates : Publishers of many of the best books on [...]]]></description>
			<content:encoded><![CDATA[<h4 class="sectionSubH">很多好东西，一定要定阅啊！</h4>
<p class="sectionSubH"> </p>
<h4 class="sectionSubH">General Information Links</h4>
<p><a href="http://www.php.net/">www.php.net </a>: Sector Zero-Zero of PHP  — the place to find definitive PHP documentation and news.</p>
<p><a href="http://www.phpbuilder.com/">PHP Builder </a>: A popular site with many PHP tutorials and code samples.</p>
<p><a href="http://www.sitepoint.com/">Sitepoint </a>: Makers of fine books and tutorials on PHP and other Web development tools.</p>
<p><a href="http://www.ora.com/">O&#8217;Reilly and Associates </a>: Publishers of many of the best <a title="books on PHP" href="http://promosearch.atomz.com/search/promosearch?sp-q=php&amp;query=&amp;sp-t=search&amp;sp-a=sp1000a5a9&amp;sp-p=all&amp;sp-q-2=Books&amp;sp-x-2=cat2&amp;p=Books&amp;sp-p-2=phrase">books on PHP</a> as well as offers compelling <a title="tutorials" href="http://www.onlamp.com/php/">tutorials</a> and news on their Web site.</p>
<p><a href="http://www.zend.com/developers.php">Zend Developer Zone </a>: Tutorials and code samples from some of PHP&#8217;s core developers.</p>
<p><a href="http://www.planet-php.net/">Planet PHP </a>: PHP News aggregator with up-to-date news about PHP from blogs and other sources.</p>
<p><a href="http://php.resourceindex.com/">PHP Resource Index</a>: Hundreds of links to PHP scripts and resources.</p>
<h4 class="sectionSubH">Specific PHP Topics</h4>
<p><a href="http://www.sitepoint.com/article/php-security-blunders">Top 7 PHP Security Blunders </a>: An overview of common PHP security mistakes that programmers make.</p>
<p><a href="http://www.sitepoint.com/article/toughen-forms-security-image">Toughen Forms&#8217; Security with an Image </a>: One approach to implementing <a href="http://en.wikipedia.org/wiki/CAPTCHA">CAPTCHA</a> using PHP.</p>
<p><a href="http://www.zend.com/php5/articles/php5-SOAP.php">PHP5 SOAP Extension </a>: An overview of PHP5&#8217;s SOAP extension by the extension&#8217;s author.</p>
<p><a href="http://www.phpbuilder.com/columns/adam_delves20060206.php3">Using XML: A PHP Developer&#8217;s Primer</a>: A series of articles discussing XML manipulation using PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thinklet.net/franky/2009/03/19/%e9%a1%b6%ef%bc%81yahoo%e5%bc%80%e5%8f%91%e8%80%85%e4%b8%ad%e5%bf%83%e6%8e%a8%e8%8d%90%e7%9a%84php%e7%bd%91%e7%ab%99/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<a style="display: none;" href="http://mcinside.com/">MC Inside</a>