<?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>php归档 - 布鲁文的蓝色奇想</title>
	<atom:link href="https://www.mrven.com/node/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>https://www.mrven.com/node/tag/php</link>
	<description>A MRVEN SITE</description>
	<lastBuildDate>Wed, 10 Jul 2024 17:09:33 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>
	<item>
		<title>选择网站主机时必须注意的20个问题</title>
		<link>https://www.mrven.com/node/773</link>
					<comments>https://www.mrven.com/node/773#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Sun, 25 Jul 2010 13:07:07 +0000</pubDate>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[adwords]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[uptime]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[主机]]></category>
		<category><![CDATA[在线率]]></category>
		<category><![CDATA[域名]]></category>
		<guid isPermaLink="false">http://cheweb.org/535.html</guid>

					<description><![CDATA[<p>哈哈，既然你点开了这篇文章，我猜十有八九你是个Web开发人员。虽然开发网站比考虑主机方面的问题有趣多了，但主机 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/773">选择网站主机时必须注意的20个问题</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.mrven.com/wp-content/uploads/2010/07/image30.png" target="_blank" rel="noopener"><img fetchpriority="high" decoding="async" style="display: inline; border: 0px;" title="image" src="https://www.mrven.com/wp-content/uploads/2010/07/image_thumb30.png" border="0" alt="image" width="604" height="204" /></a></p>
<p>哈哈，既然你点开了这篇文章，我猜十有八九你是个Web开发人员。虽然开发网站比考虑主机方面的问题有趣多了，但主机的选择的确是个非常重要的事情，不可草率决定，否则后患无穷。</p>
<p>本文指出了20个在选择网站主机时必须注意的<a href="http://cheweb.org/535.html">问题</a>，希望对你有所帮助。</p>
<h3>1 容量</h3>
<p>在选择主机时，首先你考虑的就是“我可以存储多少数据？”对绝大多数中小型网站来说，有上那么几个G的容量就足够了。有些主机商提供“无限空间”的主机（主要是国外的主机商），这其实是骗人的。仔细去读他们的《服务条款》，他们往往会说：没错，我们提供无限容量的主机，前提是你必须是“正常”网站。但什么是正常网站？这可就由不得你了。所以还是选择又设定容量的主机比较稳妥。</p>
<p>另外特别要注意的是，有些国内主机是把数据库容量和网页空间容量分开计算的，购买前务必注意。</p>
<h3>2 带宽（流量）</h3>
<p>带宽有时又叫流量，和容量两个概念容易搞混。容量指的是你拥有的硬盘空间，比如100MB，那你最多就只能存储100MB的网页、数据或多媒体文件。而带宽指的是在一定周期内（通常是一个月）你的主机允许的用户上传/下载的总容量。比如你的主机上有个1MB的网页，当用户查看这个网页1000次，就产生了1G的流量（带宽）。</p>
<p><span id="more-773"></span>如果容量用满了，那最多是不能再上传新的文件。但如果带宽耗光了，主机商就会禁止访客访问你的网站，直到下个月带宽归零前，这事可就闹不住了。因此你必须时刻关注带宽消耗情况，并且在带宽的选择上留有冗余，以应对访问量爆发的情况。</p>
<h3>3 域名/子域名数量</h3>
<p>对很多初级用户来说，他们只建一个网站，1个域名就足够了。但难保未来他们不会建立更多的网站，或者在当前网站下开设子域名。所以尽量选择允许绑定多域名/子域的主机，给未来发展留下余地。</p>
<h3>4 Email账户和功能</h3>
<p>很多主机商为用户提供Email账户功能，你可以用自己的域名创建邮箱。如果你希望主机商提供的这个功能，那你就要留意下允许创建的账户个数、是否有在线的Email控制面板、是否能与Gmail正和、是否支持POP3发信等问题。</p>
<p>当然，你也可以选择<a href="http://www.google.com/apps/intl/zh-CN/business/index.html" target="_blank" rel="noopener">Google企业套件</a>、<a href="http://domain.mail.qq.com/" target="_blank" rel="noopener">腾讯域名邮箱</a>等免费服务，他们的服务质量往往比主机商提供的更可靠。</p>
<h3>5 数据库支持</h3>
<p>现在的互联网上，再小的网站背后都有数据库支持。大部分主机都支持MySQL数据库，但如果你在使用PostgreSQL、Oracle、SQL Server或其他数据库，务必弄清楚你的主机是否支持。</p>
<h3>6 框架支持和一键安装</h3>
<p>很多国外主机商提供流行框架、博客系统、CMS的一键安装功能。这对于新手非常有用，但如果你是个老手，可能就没什么价值了。</p>
<h3>7 移动App或网站</h3>
<p>是否想通过手机也能管理你的网站，查看访问数据？如果主机商提供移动App，这就很简单的。可惜的是，目前只有Media Template和SliceHost两家推出了支持iPhone和Android的app。但我相信这是个趋势，其他主机上也会跟随的。</p>
<h3>8 技术支持</h3>
<p>非常、非常重要！务必搞清你的主机商都有哪些技术支持手段：是否有客服电话？是否有客服QQ？是否支持email客服？是否有ticket系统（国内不常见）？多久会对问题给予响应？多久能解决问题？等等等等</p>
<h3>9 Shell访问</h3>
<p>这是个高级功能，只有专业人士才会用得到。Shell访问允许你通过SSH以命令行的方式管理主机：安全的拷贝、删除文件，快速的更改文件权限，执行多线程任务等等。</p>
<h3>10 .htaccess文件支持</h3>
<p>.htaccess文件允许Apache服务器处理URL改写，简单的说它能帮你创建干净的URL，WordPress、Drupal、Discuz这些著名的建站系统都需要用到。你还可以用它来给文件夹加密码、重定向网页等等。</p>
<h3>11 Cron jobs（定时任务）</h3>
<p>Cron允许主机在指定时间执行指定任务，比如“每隔8小时重新生成网页缓存”或“每3天给未登录的用户发邮件”，这些都需要cron的支持。有cron总是件好事，而且支持shell访问的主机一般也都支持cron。</p>
<h3>12 编程语言支持</h3>
<p>这个其实不用专门提的，但是现在有些主机支持多种编程语言，比如<a href="http://www.bohehost.com" target="_blank" rel="noopener">薄荷主机</a>就同时支持PHP、Perl和Ruby。当然，如果你只使用PHP一种语言，这个就不用考虑了。</p>
<h3>13 免费的AdWords</h3>
<p>有些国外主机商会赠送Google AdWords广告额度（一般是50$），或赠送其他一些形式的广告。有总比没有好，是吧！</p>
<h3>14 网站备份</h3>
<p>不要以为服务器上的数据保存会比你自己的电脑更稳定，服务器也有故障崩溃导致数据丢失的时候。记住，服务器只是台人人都可以访问的大号电脑。留意主机商提供什么样的数据备份策略。如果主机商不提供频繁的备份，那你就要考虑自己的备份策略了。</p>
<h3>15 操作系统</h3>
<p>对大部分人来说，这不是个问题。除非你使用ASP.Net，那你就只能去找Windows服务器了；其他时候，Linux系的操作系统是主流选择。不过国内的情况不太一样，盗版使得Windows操作系统的服务器同样不少。但是要注意，上文中提到的shell访问、.htaccess这些都是只有Linux系的服务器才支持的。我就遇到不少朋友，用的是Windows+IIS的服务器，对.htaccess不支持，导致WordPress的链接出现问题的情况。</p>
<h3>16 额外的应用程序</h3>
<p>第6条里提到的“一键安装”其实就属于主机服务之外的应用程序。或许你还需要邮件列表、访问量分析等相关程序，那么就留意一下吧。</p>
<h3>17 最新版的服务器程序</h3>
<p>如果可能，尽量找软件安装的都是最新版的服务器。有些服务商软件更新的不频繁，比如都这时候了服务器上跑的还是PHP4，那可就杯具了。另外，及时更新软件也是防止安全隐患的好方法。</p>
<h3>18 在线率（uptime）</h3>
<p>我不说你也知道在线率的重要性。务必选择口碑好的服务商，他们的在线率往往更有保障。但是，100%的在线率也是不可能的，务必阅读服务商承诺的在线率，并用工具进行监测。我之前介绍过的<a href="http://cheweb.org/108.html">Pingdom</a>就是一款很好的<a href="http://cheweb.org/108.html">监测在线率的工具</a>。</p>
<h3>19 免费域名</h3>
<p>有些主机商赠送免费的顶级域名，这对还没有域名的用户来说是个好事。不过注意这里面其实也是有陷阱的，一旦使用主机商赠送的域名，如果你要退款，主机商是会把域名的钱单独扣下来的。</p>
<h3>20 虚拟主机？VPS？还是专属服务器？</h3>
<p>虚拟主机、VPS、专属服务器，三者各有千秋，各有优劣。这里不再详细分析，可以看我之前写的<a href="http://cheweb.org/370.html">一篇文章</a>，里面做了仔细的分析。</p>
<p><a href="https://www.mrven.com/node/773">选择网站主机时必须注意的20个问题</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/773/feed</wfw:commentRss>
			<slash:comments>39</slash:comments>
		
		
			</item>
		<item>
		<title>phpMyAdmin开发人员访谈——4个人支持整个项目</title>
		<link>https://www.mrven.com/node/438</link>
					<comments>https://www.mrven.com/node/438#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Sat, 15 May 2010 12:55:51 +0000</pubDate>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[sourceforge]]></category>
		<guid isPermaLink="false">http://cheweb.org/438.html</guid>

					<description><![CDATA[<p>如果说哪个开源程序不需要介绍大家就认识，那一定是phpMyAdmin，一款流行的MySQL数据库的Web管理界 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/438">phpMyAdmin开发人员访谈——4个人支持整个项目</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.mrven.com/wp-content/uploads/2010/05/673phpmyadminlogos.png" target="_blank" rel="noopener"><img decoding="async" style="display: inline; border: 0px;" title="673-phpmyadmin-logo-s-" src="https://www.mrven.com/wp-content/uploads/2010/05/673phpmyadminlogos_thumb.png" border="0" alt="673-phpmyadmin-logo-s-" width="194" height="194" /></a></p>
<p>如果说哪个开源程序不需要介绍大家就认识，那一定是<a href="http://www.phpmyadmin.net/" target="_blank" rel="noopener">phpMyAdmin</a>，一款流行的MySQL数据库的Web管理界面。MySQL是全球最流行的Web程序数据库，而phpMyAdmin让MySQL更易于管理。phpMyAdmin允许数据库设计师连接MySQL，查看他们具有权限的所有数据库和数据表，并在上面执行操作，如创建和调整表结构、插入和更新数据、导入和导出，以及在多个服务器上同步数据。</p>
<p><span id="more-438"></span>phpMyAdmin是<a href="http://sourceforge.net/" target="_blank" rel="noopener">SourceForge.net</a>上“最活跃”和“下载量最多”的程序。phpMyAdmin项目主导人之一的Marc Delisle说，像phpMyAdmin这样流行的程序，难题之一是如何支持如此之多的用户。“我们的用户范围非常宽，一些人精通数据库原理，而另一些则几乎是门外汉。我们努力为不同用户提供支持，这非常不容易。另一个难题是是处理web环境自身的问题，如应对不同的操作系统，web服务器问题，以及浏览器兼容性问题”。</p>
<p>你也许认为如此流行的项目需要很多开发者来维护，而据Delisle透露，“不算翻译人员，当前我们实际上只有4名开发者，因此在沟通协作上完全没有问题。其他人员虽然没有参与代码编写，但他们也在负责着项目的重要组成部分，如维护项目wiki、在IRC上提供帮助、帮我安排好phpMyAdmin的各类会议等等。”</p>
<p>phpMyAdmin项目同时欢迎来自用户的贡献。“这是一个社区项目，”Delisle说到，“是的，人们可以建议新的功能，但我们更希望用户给项目贡献真正的代码，或参与到我们超过60种语言的翻译工作中来。”</p>
<p>“近几年，通过加入<a href="http://code.google.com/soc/" target="_blank" rel="noopener">Google Summer of Code</a>，我们实现了一些重大的新功能。参与GSoC的一个巨大好处就是为我们带来了很多活跃的开发者。”</p>
<p>phpMyAdmin于2001年进驻SourceForge.net。“SourceForge很好的满足了我们的需求，我们找不到换到其他平台的理由。”Delisle说。“但是同时，我们在我们的SourceForge主页上发现很多用户在抱怨下载出错，希望SourceForge在这方面能做得更好。”</p>
<p><a href="https://www.mrven.com/node/438">phpMyAdmin开发人员访谈——4个人支持整个项目</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/438/feed</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
		<item>
		<title>10个不常见却很有用的PHP函数</title>
		<link>https://www.mrven.com/node/298</link>
					<comments>https://www.mrven.com/node/298#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Sat, 16 Jan 2010 07:42:49 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[函数]]></category>
		<guid isPermaLink="false">http://cheweb.org/?p=298</guid>

					<description><![CDATA[<p>1. sys_getloadavg() sys_getloadavt()可以获得系统负载情况。该函数返回一个包 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/298">10个不常见却很有用的PHP函数</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>1. sys_getloadavg()</strong></p>
<p>sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组，每个元素分别代表系统再过去的1、5和15分钟内的平均负载。</p>
<p>与其让服务器因负载过高而宕掉，不如在系统负载很高时主动die掉一个脚本，sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾，该函数在windows下无效。</p>
<p><strong>2. pack()</strong></p>
<p>Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串，可以节省存储空间。</p>
<p><strong>3. cal_days_in_month()</strong></p>
<p><span id="more-298"></span>cal_days_in_month()能够返回指定月份共有多少天。</p>
<p><strong>4. _()</strong></p>
<p>WordPress开发者经常能见到这个函数，还有_e()。这两个函数功能相同，与gettext()函数结合使用，能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。</p>
<p><strong>5. get_browser()</strong></p>
<p>在发送页面前先看看用户的浏览器都能做些什么是不是挺好？get_browser()能获得用户的浏览器类型，以及浏览器支持的功能，不过首先你需要一个php_browscap.ini文件，用来给函数做参考文件。</p>
<p>要注意，该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如，如果用户关闭了浏览器对JavaScript的支持，函数无法得知这一点。但是在判断浏览器类型和OS平台方面，该函数还是很准确的。</p>
<p><strong>6. debug_print_backtrace()</strong></p>
<p>这是一个调试用的函数，能帮助你发现代码中的逻辑错误。要理解这个函数，还是直接看个例子吧：</p>
<blockquote><p>$a = 0;</p>
<p>function iterate() {<br />
global $a;<br />
if( $a &lt; 10 )<br />
recur();<br />
echo $a . &#8220;, &#8220;;<br />
}</p>
<p>function recur() {<br />
global $a;<br />
$a++;</p>
<p>// how did I get here?<br />
echo &#8220;nnn&#8221;;<br />
debug_print_backtrace();</p>
<p>if( $a &lt; 10 )<br />
iterate();</p>
<p>}</p>
<p>iterate();</p>
<p># OUTPUT:</p>
<p>#0  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#1  iterate() called at [C:htdocsphp_stuffindex.php:25]</p>
<p>#0  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#1  iterate() called at [C:htdocsphp_stuffindex.php:21]<br />
#2  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#3  iterate() called at [C:htdocsphp_stuffindex.php:25]</p>
<p>#0  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#1  iterate() called at [C:htdocsphp_stuffindex.php:21]<br />
#2  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#3  iterate() called at [C:htdocsphp_stuffindex.php:21]<br />
#4  recur() called at [C:htdocsphp_stuffindex.php:8]<br />
#5  iterate() called at [C:htdocsphp_stuffindex.php:25]</p></blockquote>
<p><strong>7. metaphone()</strong></p>
<p>这个函数返回单词的metaphone值，相同读音的单词具有相同的metaphone值，也就是说这个函数可以帮你判断两个单词的读音是否相同。不过对中文就无效了。。。</p>
<p><strong>8. natsort()</strong></p>
<p>natsort()能将一个数组以自然排序法进行排列，直接看个例子吧：</p>
<blockquote><p>$items = array(<br />
&#8220;100 apples&#8221;, &#8220;5 apples&#8221;, &#8220;110 apples&#8221;, &#8220;55 apples&#8221;<br />
);</p>
<p>// normal sorting:<br />
sort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
# )</p>
<p>natsort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
# )</p></blockquote>
<p><strong>9. levenshtein()</strong></p>
<p>Levenshtein()告诉你两个单词之间的“距离”。它告诉你如果想把一个单词变成另一个单词，需要插入、替换和删除多少字母。</p>
<p>看个例子吧：</p>
<blockquote><p>$dictionary = array(<br />
&#8220;php&#8221;, &#8220;javascript&#8221;, &#8220;css&#8221;<br />
);</p>
<p>$word = &#8220;japhp&#8221;;</p>
<p>$best_match = $dictionary[0];<br />
$match_value = levenshtein($dictionary[0], $word);</p>
<p>foreach($dictionary as $w) {<br />
$value = levenshtein($word, $w);<br />
if( $value &lt; $match_value ) {<br />
$best_match = $w;<br />
$match_value = $value;<br />
}<br />
}</p>
<p>echo &#8220;Did you mean the &#8216;$best_match&#8217; category?&#8221;;</p></blockquote>
<p><strong>10. glob()</strong></p>
<p>glob()会让你觉得用opendir(), readdir()和closedir()来寻找文件非常蠢。</p>
<blockquote><p>foreach (glob(&#8220;*.php&#8221;) as $file)<br />
echo &#8220;$filen&#8221;;</p></blockquote>
<p>本文首发于<a href="https://www.mrven.com/?p=533">布鲁文的蓝色奇想</a></p>
<p><a href="https://www.mrven.com/node/298">10个不常见却很有用的PHP函数</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/298/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>10个你可能从未用过的PHP函数</title>
		<link>https://www.mrven.com/node/533</link>
					<comments>https://www.mrven.com/node/533#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Sat, 16 Jan 2010 07:36:27 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[函数]]></category>
		<guid isPermaLink="false">http://www.mrven.com/?p=533</guid>

					<description><![CDATA[<p>1. sys_getloadavg() sys_getloadavt()可以获得系统负载情况。该函数返回一个包 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/533">10个你可能从未用过的PHP函数</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><strong>1. sys_getloadavg()</strong></p>
<p>sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组，每个元素分别代表系统再过去的1、5和15分钟内的平均负载。</p>
<p>与其让服务器因高负载宕掉，不如在系统负载很高时主动die掉一个脚本，sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾，该函数在windows下无效。</p>
<p><strong>2. pack()</strong></p>
<p>Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串，可以节省存储空间。</p>
<p><strong>3. cal_days_in_month()</strong></p>
<p>cal_days_in_month()能够返回指定月份共有多少天。</p>
<p><span id="more-533"></span></p>
<p><strong>4. _()</strong></p>
<p>WordPress开发者经常能见到这个函数，还有_e()。这两个函数功能相同，与gettext()函数结合使用，能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。</p>
<p><strong>5. get_browser()</strong></p>
<p>在发送页面前先看看用户的浏览器都能做些什么是不是挺好？get_browser()能获得用户的浏览器类型，以及浏览器支持的功能，不过首先你需要一个php_browscap.ini文件，用来给函数做参考文件。</p>
<p>要注意，该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如，如果用户关闭了浏览器对JavaScript的支持，函数无法得知这一点。但是在判断浏览器类型和OS平台方面，该函数还是很准确的。</p>
<p><strong>6. debug_print_backtrace()</strong></p>
<p>这是一个调试用的函数，能帮助你发现代码中的逻辑错误。要理解这个函数，还是直接看个例子吧：</p>
<blockquote><p>$a = 0;</p>
<p>function iterate() {<br />
global $a;<br />
if( $a &lt; 10 )<br />
recur();<br />
echo $a . &#8220;, &#8220;;<br />
}</p>
<p>function recur() {<br />
global $a;<br />
$a++;</p>
<p>// how did I get here?<br />
echo &#8220;\n\n\n&#8221;;<br />
debug_print_backtrace();</p>
<p>if( $a &lt; 10 )<br />
iterate();</p>
<p>}</p>
<p>iterate();</p>
<p># OUTPUT:</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#2  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#3  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#2  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#3  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#4  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#5  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p></blockquote>
<p><strong>7. metaphone()</strong></p>
<p>这个函数返回单词的metaphone值，相同读音的单词具有相同的metaphone值，也就是说这个函数可以帮你判断两个单词的读音是否相同。不过对中文就无效了。。。</p>
<p><strong>8. natsort()</strong></p>
<p>Natsort()能将一个数组以自然排序法进行排列，直接看个例子吧：</p>
<blockquote><p>$items = array(<br />
&#8220;100 apples&#8221;, &#8220;5 apples&#8221;, &#8220;110 apples&#8221;, &#8220;55 apples&#8221;<br />
);</p>
<p>// normal sorting:<br />
sort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
# )</p>
<p>natsort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
# )</p></blockquote>
<p><strong>9. levenshtein()</strong></p>
<p>Levenshtein()告诉你两个单词之间的“距离”。它告诉你如果想把一个单词变成另一个单词，需要插入、替换和删除多少字母。</p>
<p>看个例子吧：</p>
<blockquote><p>$dictionary = array(<br />
&#8220;php&#8221;, &#8220;javascript&#8221;, &#8220;css&#8221;<br />
);</p>
<p>$word = &#8220;japhp&#8221;;</p>
<p>$best_match = $dictionary[0];<br />
$match_value = levenshtein($dictionary[0], $word);</p>
<p>foreach($dictionary as $w) {<br />
$value = levenshtein($word, $w);<br />
if( $value &lt; $match_value ) {<br />
$best_match = $w;<br />
$match_value = $value;<br />
}<br />
}</p>
<p>echo &#8220;Did you mean the &#8216;$best_match&#8217; category?&#8221;;</p></blockquote>
<p><strong>10. glob()</strong></p>
<p>glob()会让你觉得用opendir(), readdir()和closedir()来寻找文件非常蠢。</p>
<blockquote><p>foreach (glob(&#8220;*.php&#8221;) as $file)<br />
echo &#8220;$file\n&#8221;;</p></blockquote>
<p><a href="https://www.mrven.com/node/533">10个你可能从未用过的PHP函数</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/533/feed</wfw:commentRss>
			<slash:comments>20</slash:comments>
		
		
			</item>
		<item>
		<title>PHP4何时会死？</title>
		<link>https://www.mrven.com/node/695</link>
					<comments>https://www.mrven.com/node/695#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Wed, 28 Oct 2009 01:54:06 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://cheweb.org/?p=49</guid>

					<description><![CDATA[<p>PHP4 何时会死？要回答这个问题，先得明确 PHP4 应不应该死。从 PHP5 开始，大量强化面向对象编程的 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/695">PHP4何时会死？</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" class="alignnone size-full wp-image-51" title="goPHP5-283x100" src="https://www.mrven.com/wp-content/uploads/2009/10/goPHP5-283x100.png" alt="goPHP5-283x100" width="283" height="100" /></p>
<p>PHP4 何时会死？要回答这个问题，先得明确 PHP4 应不应该死。从 PHP5 开始，大量强化面向对象编程的功能和特性被加入到PHP中，OOP编程变得更加容易和高效；一些函数的性能得到了优化；增加了如 XML 处理等符合时代潮流的函数系列；修改了部分设置以强化安全性。从发展的眼光看，新的版本淘汰旧版本是<a href="http://cheweb.org/49.html">必然趋势</a>。</p>
<p>PHP 官方在2007年的最后一天正式停止对PHP4的更新，但PHP4并没有立刻死亡：许多升级缓慢的服务器、尤其是虚拟主机提供商仍然保留着 PHP4。</p>
<p>我们无法统计有多少服务器仍然在运行PHP4，但是在对<a href="http://chkversion.com">ChkVersion</a>上46个基于PHP的建站程序的最新稳定版本做了一番调查后，发现其中竟然有30个程序仍然支持PHP4，占到总数的65%。其中不乏耳熟能详的著名建站软件，如WordPress（最低支持到4.3）、Drupal（最低支持到4.3.5）、Joomla（最低支持到4.3.10）、Dizcuz（最低支持到4.1）。</p>
<p><span id="more-695"></span>而在对6个主流PHP开发框架（Zend Framework, CakePHP, Symfony, QeePHP, Yii, CodeIgniter）的调查中，其中也有三分之一的框架继续支持PHP4（CakePHP和CodeIgniter），这对于追求OOP思想和MVC结构的框架来说基本上是难以容忍的。</p>
<p>大量的建站程序及脚本为了顾及PHP4而无法放手去享受PHP5带来的性能提升。他们之所以不愿抛弃PHP4，正是因为大量用户仍然在使用运行着PHP4的主机；而服务器管理员为了顾及老用户的脚本稳定性（PHP5和PHP4部分不兼容），则采取保守态度不升级。服务器和脚本之间的博弈，更是加重阻碍了PHP4的死亡。</p>
<p>当初PHP3到PHP4的换代为何进展的很顺利？我想这和当时PHP并不非常流行有关。而随着PHP逐渐成为第一大Web脚本语言，升级问题越来越牵一发而动全身。那么PHP4究竟何时会死？我相信在不短的一段时间内，至少3年以内它仍然会时常出现在我们的视野中。也许正如麦克阿瑟所说，“老兵永远不死，只会慢慢凋零”。</p>
<p><a href="https://www.mrven.com/node/695">PHP4何时会死？</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/695/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>为PHP的mail()函数配置本地邮件服务器</title>
		<link>https://www.mrven.com/node/501</link>
					<comments>https://www.mrven.com/node/501#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Wed, 26 Aug 2009 06:40:49 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[hmailserver]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[smtp]]></category>
		<guid isPermaLink="false">http://www.mrven.com/?p=501</guid>

					<description><![CDATA[<p>mail()这个函数不是拿来就能用的，你需要再php.ini中做一些配置。一种方法是使用外部smtp邮件服务器 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/501">为PHP的mail()函数配置本地邮件服务器</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>mail()这个函数不是拿来就能用的，你需要再php.ini中做一些配置。一种方法是使用外部smtp邮件服务器；另一种方法是在本地配置一个邮件服务器。本文介绍如何利用<a href="http://www.hmailserver.com/" target="_blank">hMailServer</a>软件在本地配置邮件服务器。</p>
<p>hMailServer是一个邮件服务器软件，首先你需要下载并安装它，去<a href="http://www.hmailserver.com/?page=download">这里下载</a>，我下的是5.2版。安装的时候会提示你设置你的邮件服务器密码，记得保存好这个密码。启动hMailServer，输入密码，现在做一些简单的设置，直接照着图做就行了（点小图看大图），稍后解释这么做的目的。</p>
<p><a href="https://www.mrven.com/wp-content/uploads/hmailserver-2.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-502" title="hmailserver-2" src="https://www.mrven.com/wp-content/uploads/hmailserver-2-300x220.png" alt="hmailserver-2" width="300" height="220" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/hmailserver-3.PNG"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-503" title="hmailserver-3" src="https://www.mrven.com/wp-content/uploads/hmailserver-3-300x220.PNG" alt="hmailserver-3" width="300" height="220" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/hmailserver-4.PNG"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-504" title="hmailserver-4" src="https://www.mrven.com/wp-content/uploads/hmailserver-4-300x220.PNG" alt="hmailserver-4" width="300" height="220" /></a></p>
<p>第一步指定本地服务器名localhost，这个没什么好说。</p>
<p>第二步，在&#8221;Advanced&gt;&gt;IP Range&gt;&gt;My Computer&#8221;里，把POP3和IMAP前面的勾去掉，因为我们并不想用这个服务器收信，也不打算用IMAP协议；把所有的“Require SMTP authentication”选项都去掉是帮PHP扫清发信的障碍。</p>
<p>第三步，在&#8221;Advanced&gt;&gt;IP Range&gt;&gt;Internet&#8221;中，把SMTP, POP3, IMAP全部去掉，因为我们不想外人使用我们的邮件服务器；同时把“Require SMTP authentication”以加强安全性。</p>
<p>现在本地邮件发送服务器就配置完毕了。最后不要忘记在php.ini中确保以下部分没有被注释掉：</p>
<blockquote><p>[mail function]<br />
; For Win32 only.<br />
smtp = localhost<br />
smtp_port = 25</p>
<p>; For Win32 only.<br />
sendmail_from = user@yourdomail.com</p></blockquote>
<p>sendmail_from虽然可以不用设置，但是为了以防万一，最好设置一个默认值。</p>
<p>现在你就可以在本地自由的使用mail()函数了。但是不要乱发垃圾邮件哦！</p>
<p><a href="https://www.mrven.com/node/501">为PHP的mail()函数配置本地邮件服务器</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/501/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Google犯下天大错误，5条PHP优化建议遭痛批</title>
		<link>https://www.mrven.com/node/478</link>
					<comments>https://www.mrven.com/node/478#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Tue, 30 Jun 2009 03:53:56 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[优化]]></category>
		<guid isPermaLink="false">http://www.mrven.com/?p=478</guid>

					<description><![CDATA[<p>首先我承认我有点标题党了，然后： 近日Google 在 Google Code 下的 “Let’s make  [&#8230;]</p>
<p><a href="https://www.mrven.com/node/478">Google犯下天大错误，5条PHP优化建议遭痛批</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>首先我承认我有点标题党了，然后：</p>
<p>近日Google 在 Google Code 下的 “Let’s make the web faster” 网站中，发表了一篇名为“<a href="http://code.google.com/intl/zh-CN/speed/articles/optimizing-php.html" target="_blank">PHP performance tips</a>”的文章，介绍了一些php性能优化建议，其中：</p>
<ol>
<li>不要随意复制变量</li>
<li>用单引号表示字符串</li>
<li>使用echo输出字符串</li>
<li>不要在echo中使用点号连接符</li>
<li>使用switch/case代替if/else</li>
</ol>
<p>这篇文章发表后没多久就立刻遭到了一些PHP社区和个人无情的批驳，他们声称<a href="http://groups.google.com/group/make-the-web-faster/browse_thread/thread/ddfbe82dd80408cc?pli=1" target="_blank">Google错了</a>，错的很彻底，这5条看似有效优化建议其实完全是迷信：</p>
<p>1. <span style="text-decoration: line-through;">不要随意复制变量</span></p>
<p>Zend引擎采用了“写时复制”机制，这意味着无论你对变量进行多少次复制，真正的复制动作都仅在变量值改变时才发生。</p>
<p>2. <span style="text-decoration: line-through;">用单引号表示字符串</span></p>
<p>无数的基准测试已经证明，使用双引号表示纯字符串并不比使用单引号时慢。有兴趣的朋友也可以重复一下这个测试：</p>
<blockquote><p>php &gt; $blah=&#8221;blah&#8221;; $s=microtime(true); for($i=0;$i&lt;100000;$i++) &#8220;omgwtf$blah\n&#8221;; echo microtime(true)-$s;<br />
0.044615983963013<br />
php &gt; $blah=&#8221;blah&#8221;; $s=microtime(true); for($i=0;$i&lt;100000;$i++) &#8216;omgwtf&#8217;.$blah.&#8221;\n&#8221;; echo microtime(true)-$s;<br />
0.042807102203369</p></blockquote>
<p>3. <span style="text-decoration: line-through;">使用echo输出字符串</span></p>
<p>根据php所在服务器环境的不同，某些情况下echo会比print()慢。这里有一篇echo和print()对比的帖子，对echo和print()的速度进行了测试：http://www.learnphponline.com/php-basics/php-echo-vs-print</p>
<p>4. <span style="text-decoration: line-through;">不要在echo中使用点号连接符</span></p>
<p>基准测试证明这又是一条与事实完全相反的建议。php引擎处理以点号连接（或者使用双引号）传递给echo的变量实际上是更快的。你可以重复这个测试：</p>
<blockquote><p>$ php -d implicit_flush=off -r &#8216;$s=microtime(true); for($i=0;$i&lt;100000;$i++) echo &#8220;omgwtf&#8221;,&#8221;bbq&#8221;,&#8221;\n&#8221;; echo microtime(true)-$s;&#8217; | tail -n 1<br />
1.071463108062710<br />
$ php -d implicit_flush=off -r &#8216;$s=microtime(true); for($i=0;$i&lt;100000;$i++) echo &#8220;omgwtf&#8221;.&#8221;bbq&#8221;.&#8221;\n&#8221;; echo microtime(true)-$s;&#8217; | tail -n 1<br />
0.44555306434631</p></blockquote>
<p>5. <span style="text-decoration: line-through;">使用switch/case代替if/else</span></p>
<p>这条建议毫无意义。关于是要使用switch/case还是if/else的问题，其实完全是个代码风格问题，而它们的效率相差无几。</p>
<p>一向以技术为长的Google，竟然在技术问题上犯了如此错误，相当不严谨。PHP小组已经督促文章作者重新仔细审查文章，希望能尽快改掉，以正视听。</p>
<p><a href="https://www.mrven.com/node/478">Google犯下天大错误，5条PHP优化建议遭痛批</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/478/feed</wfw:commentRss>
			<slash:comments>11</slash:comments>
		
		
			</item>
		<item>
		<title>用PHP在网页上显示psd文件</title>
		<link>https://www.mrven.com/node/465</link>
					<comments>https://www.mrven.com/node/465#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Mon, 01 Jun 2009 08:46:02 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[psd]]></category>
		<category><![CDATA[图片]]></category>
		<guid isPermaLink="false">http://www.mrven.com/?p=465</guid>

					<description><![CDATA[<p>或许你会有直接在网页上显示psd文件的需要，那么classPhpPsdReader.php能帮助你。这是一个由 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/465">用PHP在网页上显示psd文件</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>或许你会有直接在网页上显示psd文件的需要，那么classPhpPsdReader.php能帮助你。这是一个由Tim de Koning在2007年编写的一个基于GD库的PHP类，能够用PHP对图片进行一些操作，包括显示psd文件。这个类兼容PHP4和PHP5，可以放心使用。</p>
<p>使用方法也很简单，上传classPhpPsdReader.php，然后：</p>
<pre lang="php"><?php
// 发送header
header("Content-type: image/jpeg");
// 包含类文件
include_once('classPhpPsdReader.php');
// 显示psd文件
imagejpeg(imagecreatefrompsd('yourPsdFile.psd'));
?></pre>
<pre>就这么简单。</pre>
<p><a href="https://www.mrven.com/wp-content/uploads/classphppsdreader.zip">下载classPhpPsdReader.php</a></p>
<p><a href="https://www.mrven.com/node/465">用PHP在网页上显示psd文件</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/465/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>ZCE那回事</title>
		<link>https://www.mrven.com/node/381</link>
					<comments>https://www.mrven.com/node/381#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Mon, 20 Apr 2009 03:14:07 +0000</pubDate>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend认证]]></category>
		<guid isPermaLink="false">http://www.naks.cn/blueven/?p=381</guid>

					<description><![CDATA[<p>首先恭喜Zesen Wang同学成为全中国第17个获得ZCE认证的PHP工程师，他在今年四月初通过了考试，证书 [&#8230;]</p>
<p><a href="https://www.mrven.com/node/381">ZCE那回事</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>首先恭喜<a href="http://www.zend.com/en/store/education/certification/authenticate.php/ClientCandidateID/ZEND008845/RegistrationID/229334061" target="_blank">Zesen Wang</a>同学成为全中国第17个获得ZCE认证的PHP工程师，他在今年四月初通过了考试，证书现在在从美国到中国的途中。</p>
<p>用他的话来说，考试挺简单：PHP基础不错，能看懂题目（英文的）就能过。他复习的是ZCE5教程和我翻译的<a href="https://www.mrven.com/?p=180">ZCE4试题讲解</a>，在4道填空题完全乱码没法做的情况下仍然通过了考试。</p>
<p>不过这ZCE在国内还真不怎么吃得开。从人才的角度看，知道的人少、考的人少、通过的更少；从用人单位的角度看，知道的单位少、承认的单位几乎没有。某同学也表示很无奈——获得ZCE认证后工资完全没有涨。</p>
<p>所以，125美刀买个虚荣，您觉得值那就是值。不过话说回来不少认证考试都存在类似的尴尬，比如我上学时考的计算机三级证书，还好只花了70块。</p>
<p>多做点项目吧，经验永远是最宝贵的财富。</p>
<p><a href="https://www.mrven.com/node/381">ZCE那回事</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/381/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>pChat——无敌PHP图表库</title>
		<link>https://www.mrven.com/node/387</link>
					<comments>https://www.mrven.com/node/387#comments</comments>
		
		<dc:creator><![CDATA[Ven]]></dc:creator>
		<pubDate>Sat, 11 Apr 2009 03:29:11 +0000</pubDate>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.naks.cn/blueven/?p=387</guid>

					<description><![CDATA[<p>无图无真相，先上图： 上面这些是什么？这可不是Excel做的图表，更不是Photoshop做的，这全是用pCh [&#8230;]</p>
<p><a href="https://www.mrven.com/node/387">pChat——无敌PHP图表库</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p>无图无真相，先上图：</p>
<p><a href="https://www.mrven.com/wp-content/uploads/example1.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-388" title="example1" src="https://www.mrven.com/wp-content/uploads/example1-300x98.png" alt="example1" width="300" height="98" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/example2.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-389" title="example2" src="https://www.mrven.com/wp-content/uploads/example2-300x98.png" alt="example2" width="300" height="98" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/example6.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-390" title="example6" src="https://www.mrven.com/wp-content/uploads/example6-300x98.png" alt="example6" width="300" height="98" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/example8.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-391" title="example8" src="https://www.mrven.com/wp-content/uploads/example8-300x300.png" alt="example8" width="300" height="300" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/example10.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-392" title="example10" src="https://www.mrven.com/wp-content/uploads/example10-300x157.png" alt="example10" width="300" height="157" /></a></p>
<p><a href="https://www.mrven.com/wp-content/uploads/example12.png"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-393" title="example12" src="https://www.mrven.com/wp-content/uploads/example12-300x98.png" alt="example12" width="300" height="98" /></a></p>
<p>上面这些是什么？这可不是Excel做的图表，更不是Photoshop做的，这全是用pChat做的。</p>
<p>pChat是一个面向对象的PHP类，用于创建图表。它是开源的，免费的。数据可以来自SQL查询、CSV文件或者手工录入。然后指定图表样式，一张漂亮的图表就生成了。pChat需要GD库支持。</p>
<p>这里有更多用<a href="http://pchart.sourceforge.net/screenshots.php" target="_blank">pChat做的例子</a>可以看，<a href="http://pchart.sourceforge.net/download.php" target="_blank">下载pChat请点这里</a>。</p>
<p><a href="https://www.mrven.com/node/387">pChat——无敌PHP图表库</a>最先出现在<a href="https://www.mrven.com">布鲁文的蓝色奇想</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.mrven.com/node/387/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
