这里的大型项目,简单的指分布式项目,就是说,你的程序需要被部署在
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 则作为前端和系统的胶水,
快速而灵活的把这些粘合起来。