background image

PHP 项目 WEB 系统开发高效应用技巧

PHP 是一个很优秀的工具,它可以简单,也可以复杂。不一样的项目,应该用不一样的
PHP。
  

 – 

小项目

简单而直接的 PHP

  一般对于一个功能页面在 20 以下的网站,我们可以用一个很简单的框架结构来写。
在这个规模上,我建议是使用比较直接的面向过程编码方法,原因很简单,没有必要把
class 文件弄的 N 多,结果 controller 里边就一个 new 就完了。当然,需求频繁变化的
项目除外。
  在这个级别上,php 优点表现的很明显:快速开发,一目了然。缺点同时也被隐藏得
很好。
 

 – 

 中型项目

结构优美的 OO 化的 PHP

  对于一个中型项目,我建议使用一个良好设计的框架来做,这个框架可以是基于
MVC 模型,封装了众多底层操作的,当然,一定要有一个好的最好是透明的 cache 机
制,这样,我们为了适应变化而加入的 OO 机制可以运行得更快更好。
  在这个级别上。php 的缺点开始凸现,像对 OO 支持的不完整(这个 PHP5 有很大改
进),只能单线程模式。另外一些外围工具开始出现缺乏支持,像 PHP 没有好的重构工具,
没有好的集成到 IDE 中的单元测试工具。优点当然还是原来的快速开发,广泛的可用的开
源资源。

 – 

  大型项目

扩展、优化后的 PHP

  这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在 N 台服务
器上了。在这个层级上,PHP 比起 j2ee 的确缺乏很多支持。我曾和 shadow 在 735 上详
细讨论过 PHP 要在大型系统上应用需要解决的一些问题,当然这些问题不光是 PHP 这个
语言的问题,也包括了周边开发的问题:
  1、PHP 的页面代码共享,PHP

 – 

的源代码被载入内存一次以后,就在其中保留 这个

用 APC 和 Zend 的优化器可以搞定。
  2、PHP 页面之间的数据对象共享,a.php 和 b.php 之间可以共享一个数据对象,比
如数组,这个现在可以用序列化来作,但是会有文件 io,这块可以用共享内存或者
memcached 来处理。
  3、PHP 的数据库连接池,因为在多前端的情况下,PHP 控制不住对数据库的连接,
所以需要在数据库前边去作一个连接池,类似于 sqlrelay 的东西。另外数据缓存也是很
重要的,大压力开发有一个 tip,就是能不动数据库就不要动数据库。
  4、PHP 的前端 cache 系统。一个透明的可控制的 cache 机制,确保网站的页面以最
少次数查询数据库。这个有很多实现,但是没有找到特别好的。
  5、一个 PHP 应用,成功的解决调这几个问题以后,应付稍微大一点的压力是没有什
么问题的。
  在这个级别上,重要的是,把 PHP java C python 之类融合起来,使其成为一个高
效系统。我们可以用 memcached 来做分布式内存管理,可以用 Lucene 来作全文检索,