background image

  这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在

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 来作

全文检索,用

ejb 容器来放一些业务逻辑组件,PHP 则作为前端和系统的胶水,

快速而灵活的把这些粘合起来。