PHP是一個很優(yōu)秀的工具秆撮,它可以簡單,也可以復(fù)雜换况。不一樣的項目职辨,應(yīng)該用不一樣的PHP盗蟆。
一般對于一個功能頁面在20以下的網(wǎng)站,我們可以用一個很簡單的框架結(jié)構(gòu)來寫舒裤。在這個規(guī)模上喳资,我建議是使用比較直接的面向過程編碼方法,原因很簡單腾供,沒有必要把class文件弄的N 多仆邓,結(jié)果controller里邊就一個new就完了。當(dāng)然伴鳖,需求頻繁變化的項目除外节值。
在這個級別上,php優(yōu)點(diǎn)表現(xiàn)的很明顯:快速開發(fā)榜聂,一目了然察署。缺點(diǎn)同時也被隱藏得很好。
中型項目 - 結(jié)構(gòu)優(yōu)美的OO化的PHP
對于一個中型項目峻汉,我建議使用一個良好設(shè)計的框架來做贴汪,這個框架可以是基于MVC模型,封裝了眾多底層操作的休吠,當(dāng)然扳埂,一定要有一個好的最好是透明的cache機(jī)制,這樣瘤礁,我們?yōu)榱诉m應(yīng)變化而加入的OO機(jī)制可以運(yùn)行得更快更好阳懂。
在這個級別上。php的缺點(diǎn)開始凸現(xiàn)柜思,像對OO支持的不完整(這個PHP5有很大改進(jìn))岩调,只能單線程模式。另外一些外圍工具開始出現(xiàn)缺乏支持赡盘,像PHP沒有好的重構(gòu)工具号枕,沒有好的集成到IDE中的單元測試工具。優(yōu)點(diǎn)當(dāng)然還是原來的快速開發(fā)陨享,廣泛的可用的開源資源葱淳。
大型項目 - 擴(kuò)展、優(yōu)化后的PHP
這里的大型項目抛姑,簡單的指分布式項目赞厕,就是說,你的程序需要被部署在N臺服務(wù)器上了定硝。在這個層級上皿桑,PHP比起j2ee的確缺乏很多支持。我曾和shadow在735上詳細(xì)討論過PHP要在大型系統(tǒng)上應(yīng)用需要解決的一些問題,當(dāng)然這些問題不光是PHP這個語言的問題诲侮,也包括了周邊開發(fā)的問題:
1镀虐、 PHP的頁面代碼共享,PHP的源代碼被載入內(nèi)存一次以后浆西,就在其中保留 - 這個用APC和Zend的優(yōu)化器可以搞定粉私。
2顽腾、PHP頁面之間的數(shù)據(jù)對象共享近零,a.php和b.php之間可以共享一個數(shù)據(jù)對象,比如數(shù)組抄肖,這個現(xiàn)在可以用序列化來作久信,但是會有文件io,這塊可以用共享內(nèi)存或者memcached來處理漓摩。
3裙士、PHP的數(shù)據(jù)庫連接池,因為在多前端的情況下管毙,PHP控制不住對數(shù)據(jù)庫的連接腿椎,所以需要在數(shù)據(jù)庫前邊去作一個連接池,類似于sqlrelay的東西夭咬。另外數(shù)據(jù)緩存也是很重要的啃炸,大壓力開發(fā)有一個tip,就是能不動數(shù)據(jù)庫就不要動數(shù)據(jù)庫卓舵。
4南用、PHP的前端cache系統(tǒng)。一個透明的可控制的cache機(jī)制掏湾,確保網(wǎng)站的頁面以最少次數(shù)查詢數(shù)據(jù)庫裹虫。這個有很多實現(xiàn),但是沒有找到特別好的融击。
5筑公、一個PHP應(yīng)用,成功的解決調(diào)這幾個問題以后尊浪,應(yīng)付稍微大一點(diǎn)的壓力是沒有什么問題的十酣。
在這個級別上,重要的是际长,把PHP java C++ python之類融合起來耸采,使其成為一個高效系統(tǒng)。我們可以用memcached來做分布式內(nèi)存管理工育,可以用Lucene 來作全文檢索虾宇,用ejb 容器來放一些業(yè)務(wù)邏輯組件,PHP則作為前端和系統(tǒng)的膠水如绸,快速而靈活的把這些粘合起來嘱朽。
曾經(jīng)實現(xiàn)過 PHP .NET旭贬,PHP Java之類的融合!