如何使用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 來作全文檢索,用ejb 容器來放一些業務邏輯元件,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 來作全文檢索,用ejb 容器來放一些業務邏輯元件,PHP則作為前端和系統的膠水,快速而靈活的把這些粘合起來。
曾經實現過 PHP .NET,PHP Java之類的融合!
本文轉自朱志兵 51CTO部落格,原文連結:http://blog.51cto.com/richardzhu/196734 ,如需轉載請自行聯絡原作者
相關文章
- 如何構建一個高效的 golang web 開發環境GolangWeb開發環境
- Python 如何開發高效漂亮的輕量級 Web 應用?PythonWeb
- PHP 系列:PHP Web 開發基礎PHPWeb
- 使用 Nginx + Lua(OpenResty)開發高效能Web應用NginxRESTWeb
- 使用者管理系統,PHP專案開發銀彈?PHP
- PHP開發Web服務PHPWeb
- PHP和MySQL Web開發PHPMySqlWeb
- Web開發初探(系統理解Web知識點)Web
- 打造優雅高效的 PHP 開發環境PHP開發環境
- 如何快速高效的完成一個3層架構的應用系統的開發架構
- Web高效能開發總結Web
- Android中如何使用Lambda表示式高效開發Android
- 高效Web開發的10個jQuery程式碼片段WebjQuery
- 文件管理系統如何幫助企業高效發展
- Web 開發手冊——PHP 開發環境搭建WebPHP開發環境
- 社交 App 系統 ThinkSNS+ PHP 開發概述APPPHP
- 如何再IDEA 上使用java web開發IdeaJavaWeb
- 艾偉_轉載:如何開發絢麗、高效率的介面(Windows嵌入式系統)Windows
- PHP - 《高效能php應用開發》學習筆記PHP筆記
- Node助力Web應用開發——在新的開發平臺,打造高效能Web應用Web
- 小型系統如何“微服務”開發微服務
- 如何系統學習 iOS 開發?iOS
- 【Web開發技術】德優教育管理系統Web
- web開發語言的選擇:PHP or JAVA薦WebPHPJava
- java開發系統核心:使用C語言開發系統應用程式JavaC語言
- 如何使用 SDKMAN管理 Linux 系統上的Java 開發工具包LinuxJava
- 6個建立Web應用程式的高效PHP框架WebPHP框架
- 直播系統定製開發的步驟分享,如何進行直播系統定製開發
- 電商企業如何選擇erp系統開發?erp系統開發
- 如何構建一個高效的開發流程
- 基於 PHP 的 Web OA 辦公系統-Openbiz OAPHPWeb
- 全棧開發--vue.js+php開發個人部落格系統全棧Vue.jsPHP
- 用 PHP 開發一個簡單的以太坊支付系統PHP
- 如何開發 WEB applicationWebAPP
- 如何提高web系統的吞吐能力?Web
- [原創] EzDev v1.0 - 易於使用的一鍵 PHP,Web 開發套件devPHPWeb套件
- 有哪些方法可以高效學習web前端開發?Web前端
- 前端小記4——高效能mobile web開發前端Web