Archive for the ‘PHP’ Category

高性能LAMP程序设计

Monday, July 18th, 2011

周六分享的PPT,一些比较common的大杂烩,看不到slides的同学在这里查看。

使用fastcgi_cache加速你的Nginx网站

Saturday, January 1st, 2011

很久以前在TW上挖了个坑,说nginx的fastcgi_cache是被大家忽视的一大金矿,今天把这个坑填上,顺祝大家新年快乐。 对于变化不太频繁的数据,大家都比较喜欢存Memcached以减少数据库的读取,但还是会有语言解析运行上的消耗(比如运行PHP,Python等),当然这个时间很短,记得OP上有个同学说P字头的语言,效率都不高,如果能省去,当然最好。(已经用上Squid等的可以忽略本文)。 还有一个问题就是很多时候一个页面由多个数据片断组成,为了提高页面速度,要么分别缓存,要么整体缓存(所谓的Page Cache),其实都比较麻烦,增加和减少数据片断的时,大多需要调整。 最后一个问题,所有的数据都存Memcached是否经济?服务器资源足够多的无所谓,捉襟见肘的就要考虑了,当然,生成静态页面是一种方法,需要维护,还是比较累。 好吧,nginx的fastcgi_cache可以解决上面的那些问题,比较squid等的好处是简单,不需再要去维护另外一个系统,适合不那么大的网站。 关于Nginx fastcgi_cache,基础的可以参看Nginx官方文档http://wiki.nginx.org/HttpFcgiModule,下面是一个典型的做法是: fastcgi_temp_path /data/ngx_fcgi_tmp; fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g; fastcgi_cache_valid 200 301 302 1d; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key $request_method://$host$request_uri; 注意一定要加上$request_method作为cache key,否则如果HEAD类型的先请求会导致后面的GET请求返回为空,全局定义一个缓存空间,配置文件名为,fastcgi_cache.conf,然后在vhost配置里面加上: fastcgi_cache ngx_fcgi_cache; include fastcgi.conf; 大概解释下各个参数的含义: fastcgi_temp_path:生成fastcgi_cache临时文件目录 fastcgi_cache_path:fastcgi_cache缓存目录,可以设置目录哈希层级,比如2:2会生成256*256个字目录,keys_zone是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,max_size表示最多用多少硬盘空间,需要注意的是fastcgi_cache缓存是先写在fastcgi_temp_path再移到fastcgi_cache_path,所以这两个目录最好在同一个分区,从0.8.9之后可以在不同的分区,不过还是建议放同一分区。 fastcgi_cache_valid:定义哪些http头要缓存 fastcgi_cache_use_stale:定义哪些情况下用过期缓存 fastcgi_cache_key:定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录。 fastcgi_cache:用哪个缓存空间 这样就可以了,基本上可以work,但还没完,如何手动清除缓存?有个Nginx的第三方扩展可帮你做到:https://github.com/FRiCKLE/ngx_cache_purge/,如果对大多数第三方扩展无爱,写个清除的脚本也非常简单,以PHP为例:

ColaPHP 1.0GA发布

Saturday, November 27th, 2010

从2008年底开始,经历了4个alpha版本、5个beta版本,趁着今天下午去Beijing Open Party,ColaPHP发布1.0GA版本,这是ColaPHP一个重要的里程碑版本,相信我,这只是开始.... 感兴趣的同学可以到http://code.google.com/p/colaphp/下载1.0GA的版本,当然,欢迎你下午和我一起交流。

ColaPHP In Action

Friday, August 6th, 2010

看不到Slide的同学,可以直接点这里。

Mediawiki扩展编写实战

Thursday, July 22nd, 2010

Wikipedia大家都很熟悉,而Mediawiki则是Wikipedia背后的功臣,整个Wikipedia都构建在mediawiki之上,mediawiki的稳定性和高效性值得信赖,同时Mediawiki非常易于扩展,可以通过Extension的方式添加非常多的功能,而且Mediawiki的Extension社区也非常活跃,大家可以到Mediawiki Extension目录下去下载自己需要的扩展程序。 上周末,帮朋友写了一些Mediawiki的扩展,立即被Mediawiki的强大扩展性折服,主要实现的功能有:增加Google Analytics统计、自定义标题、增加Google Adsense广告之类,写Mediawiki的扩展,最好的参考是Mediawiki扩展手册:http://www.mediawiki.org/wiki/Manual:Extensions。 Mediawiki的扩展主要有Tag Extension、Parser Functions、Hooks、Special Pages、Skins、Magic Words,对应的中文是:标签扩展(自定义wiki标签,比如xxxx)、解析扩展(和标签类似,不过呈现方式稍有不通,为{{#foo : bar}})、钩子、特殊页面、皮肤、魔术关键字,我这里演示的是Parser Functions和Hooks,其他的差不多类似。 一、增加Google Analytics统计和Google Adsense广告 原理很简单,我们在页面显示之前,把Google Analytics和Google Adsense的代码append到要显示的内容即可,代码:

ColaPHP 0.8beta发布

Saturday, July 3rd, 2010

代号:Mini,bugfix版本,改善框架易用性,代码重构。 下载ColaPHP 0.8beta,阅读ColaPHP文档,访问ColaPHP项目。 ColaPHP 0.8beta已经很稳定,可以在生产环境使用。

PHP导出MySQL数据到Excel文件

Wednesday, May 12th, 2010

经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限。这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件。

ColaPHP 0.7beta发布

Saturday, April 3rd, 2010

ColaPHP的2010.3月度发布计划版本,稍微晚了几天,代号Recode,和0.6beta相比,框架结构有比较大的变化,主要修改如下: 精简框架核心,除FrontController、Router、MVC外,其他功能组件化 Cola_Db、Cola_Cache、Cola_Log、Cola_Yaml已组件化成Cola_Com_Db、Cola_Com_Cache、Cola_Com_Log、Cola_Com_Yaml Controller中可直接使用$this->com->db($config)之类的接口来调用组件 少量代码重构以及bug fix 下载ColaPHP 0.7beta,阅读ColaPHP文档,访问ColaPHP项目。 由于0.7beta做框架架构上变化有点大,不建议立即采用,生产环境中建议使用稳定的0.6beta,下一个版本0.8beta开发代号:Mini,主要对架构、代码做进一步重构优化。

ColaPHP 0.6beta发布

Sunday, February 28th, 2010

ColaPHP月度发布计划版本,代号:Easy,和0.5beta相比变化不大,主要修改如下: 增加Yaml处理,底层调用symfony yaml包处理 增加自定义异常类,后续准备将框架中的异常细分(好处是将来可以对异常做针对性处理) 少量代码重构以及bug fix 下载ColaPHP 0.6beta,阅读ColaPHP文档,访问ColaPHP项目。 下一个版本0.7beta开发代号:Recode,主要对代码做进一步重构优化。

ColaPHP-0.4-alpha发布

Wednesday, December 23rd, 2009

ColaPHP月度发布计划,基本上每月发一个release,相比较0.3alpha,比较大的修改如下: 增加了动态路由模式,可不用定义URL规则 增加对MySQL Master-Slave支持,可以由单数据库无缝迁移到主从模式 去除框架中Smarty模板的绑定,可以在Controller中自行调用Smarty模板 Helper中增加了性能测试模块Benchmark.php 增加对MongoDB的简单绑定Mongo.php 性能进一步提升 大量的代码重构以及bug fix 访问ColaPHP官方网站,下载0.4alpha,不过建议随时跟进我们的svn://colaphp.googlecode.com/svn/trunk/,ColaPHP一直在活跃开发。 ColaPHP 0.4alpha已完成预期目标,所有的函数都控制在20行以内。下一个版本0.5alpha版本开发代号:Practice,ColaPHP已经在一些实际项目中使用,0.5alpha将得到更多的实践优化 招募PHP极客加入ColaPHP,联系fuchaoqun#gmail.com。