2007-09-08

Web熱潮的大推手-PHP



Web熱潮的大推手-PHP
文/ 黃天賜 (記者) 2007-01-15

PHP不僅使用人口多,應用在大型網站和新穎的網路應用也屢見不鮮;除了作為炫人耳目的Web 2.0網站之用,事實上PHP也有許多企業應用程式的解決方案。我們將全面解析PHP,並分析它在發展過程中的限制與隱憂。


PHP發展

 

造就PHP的關鍵
PHP的初衷便是針對網站開發所設計,簡便、快速開發的直譯式語言。近十年發展下來,以其學習快、使用容易、且擁有大量的函式庫的優勢,成為它廣受歡迎的原因。

Ruby on Rails登場,衝擊PHP發展
RoR具備輕巧、漂亮的MVC架構和簡化設定、降低重複工作的原則,它的出現,不但使得過去深為繁複設定工作所苦的Java網站開發人員,眼睛為之一亮,更讓過去以輕巧見長的PHP相形失色。

PHP協助企業及早進入Web based的時代
PHP結合許多現成的元件與框架,能迅速開發出豐富互動效果的網站,提供使用者為簡單易用使用者介面,這些技術往往納入各式企業應用系統,讓企業能在存取性高的網站上管理與生產。

圖解新世代PHP敏捷開發框架-以CakePHP為例
PHP為了急起直追RoR的漂亮架構,紛紛推出許多所謂「Rails-like」的框架,CakePHP就是其中之一,讓框架來處理煩人的設定工作,開發人員需要撰寫的程式碼也相對減少,日後的維護工作也更容易進行。

企業案例

 

PHP讓電子商務網站Zakka重獲新生
Zakka原本使用Windows平臺,透過ASP開發網站,然而上線之後系統一直出現問題,庫存一直無法精確統計,訂單也經常發生錯單,造成客訴不斷。為了解決種種問題,決定以PHP重新架構,寄望提升服務品質。

PHP開發社群談PHP

 

加入Lifetype開發團隊,熟悉PHP物件導向的開發方式之餘,也更深化對PHP的認識

吳信儀/Mark
「和RoR相較,PHP資源多,人才多,以目前的條件,PHP在企業的適用性更高。」


PHP可大可小,隨人運用

黃雋/ Jimmy
「PHP可大可小,自由度是它最為迷人的地方。」


PHP讓程式開發人員保有自由的思考

張至寧/ Eddy
「撰寫PHP的開發人員,需要有無中生有的專業能力,也不會被工具的框架所限制。」


PHP認證最大的意義在檢視自己功力

姜鐘凱/Darkhero
「PHP認證的鍍金效果有限,比較重要的是藉由考試來檢核自己的實力夠不夠穩固。」


Smarty增加PHP程式獨立性

朱建志/JaceJu
「Smarty雖然存在一些效能和語法習慣的問題,但以MVC架構觀點來看Smarty,在View這個部分的角色仍相當稱職。」


造就PHP的關鍵 PHP這個發展超過10年,擁有最多使用人口的網頁程式語言,一向以簡單、快速知名,也因此在Web 2.0捲起千堆雪的風潮中,不曾缺席,無論是影音網站、部落格、電子商務、Wiki系統等,通通有PHP的身影。我們甚至可以說,PHP其實是這波Web 2.0的骨幹之一,儘管它不如Ajax那麼容易被炫目,也不像Ruby on Rails充滿明星身段, 或像.NET或Java那麼深受企業信賴,然而它還是依然保有網頁程式霸主的地位,並且保有生猛活力,箇中原因,值得深入探索。

為了尋求PHP的活力根源,我們走訪幾位長期使用PHP開發人員,他們除了應用在工作之上,也積極參與PHP開發原始碼專案或社群,這些第一線的PHP戰 士,為我們解析了PHP致勝的原因,也點明它在發展上的困境。另外,面對在網頁開發領域中猶如投下一記深水炸彈的Ruby on Rails,PHP如何與之因應與對話,也是一個觀察重點。

不少人對PHP是否足堪企業應用存疑,然而電子商務網站Zakka雜貨網卻從ASP投向PHP,並在PHP加持之下解決過去系統不穩定的情況,更強化網站架構的彈性、效能與營運品質,我們將仔細剖析這個案例,以進一步了解PHP的特質。

易學、彈性和開放原始碼社群,造就PHP生命力
容易上手是PHP之所以能廣為盛行的原因之一。PHP是基於C語言之上的直譯式語言,可讀性比過去常被用來當作CGI語言的Perl高,寬鬆的變 數型態和宣告,也讓它在使用上相當方便,另外廣大的函式庫也讓開發人員可以減輕不少工作。基於以上的數種特性,許多PHP開發人員根本不需要IDE工具輔 助,只需要一個文字處理軟體,像是Windows當中的記事本或UltraEdit,就可以進行開發,從另一個層面來說,降低了開發人員或企業的軟體成 本。

參與知名文件管理系統Drupal社群的黃雋,便是使用Notepad++進行PHP的開發,在他眼中,PHP除了學習容易之外,最大的好處在於 實作的架構可大可小,如果只是要設計一個Web的發信介面,透過PHP可能10幾行程式碼就可以解決。如果需要更為龐大的架構,PHP也可以透過物件導向 的開發方式,嚴謹實作出漂亮的架構。

關於這一點,長期參與Lifetype開發團隊的吳信儀體驗最深。Lifetype前身為plog,雖然一開始便採用物件導向架構,不過早期規畫 時並沒有針對多人的使用環境最佳化。後來大陸的博客中國網站採用plog作為他們的平臺,當人數增加到5000人左右,系統就難以負荷。

在了解博客中國的瓶頸之後,Lifetype開發團隊針對快取、資料庫查詢、索引,以及整體架構調整,整體的效能便有明顯提升,以目前博客中國透 過Proxy輔助,利用一臺Web Server和分散的資料庫系統架構,可以支撐到10萬個會員。吳信儀認為,應用程式架構只要設計得當,加上良好的系統配置,PHP用來開發大型網站並沒 有問題。無論是採用物件導向觀念實作的Lifetype,或是仍維持傳統PHP方式開發的Drupal,一樣都建立起頗受好評的應用程式,這也是PHP可 大可小、架構彈性的證明。

吳信儀認為PHP另一個關鍵的好處在於它是開放原始碼,因此程式設計師能使用的資源相當多,幾乎需要任何系統都能在PHP社群中找到解決方案。從 CRM、專案管理系統等種種企業應用程式,或最近熱門的MVC網站開發架構,只要有需求,PHP通常在極短的時間內就可以產生軟體或框架。例如Ruby on Rails受到廣泛重視之後,PHP很快就採其神髓,釋出像CakePHP、Symfony等Rails-like的MVC架構;如果有客製化的需求,只 要程式設計師的PHP功力足夠,將架構整個翻新也都沒有任何問題。像是最近崛起的部落格平臺Pixnet,就是將原本Lifetype架構大改寫,幾乎只 留下資料庫結構和CSS。

另一個CMS平臺Joomla中文專案負責人張至寧,則認為PHP的平民性格是它能廣受歡迎的原因。PHP不需要專用的開發工具,在便宜的虛擬主 機上就可以運行,而且幾乎所有的虛擬主機代管廠商都支援;加上PHP學習門檻低,使用者很快就可以進入開發工作。張至寧開玩笑地說:「PHP看起也許髒髒 醜醜的,不上相也不起眼,但要派上用場時,是不會輸給那些貴族網頁程式開發語言」。

PHP的發展史

PHP的發展源頭是從1994年開始,當時Rasmus Lerdorf在C語言的基礎上開發出一套CGI程式,稱之為「Personal Home Page Tools」這便是PHP的濫觴。

之後Zeev Suraski和Andi Gutmaus在1997年改寫PHP,並在隔年推出PHP3。2000年之後PHP的Zend引擎和PHP 4發布,從此PHP邁向一個新的境界,使用者大增。

在2004年PHP 5發布,在架構上朝物件導向發展,對MySQL資料庫的支援也更為完整。另外像是提升XML運用、整合SOAP支援、提供例外處理和全新的資料庫存取介面PDO(PHP Data Objects)等,都是PHP 5所加強之處。

但 是PHP 4卻不因為新版本推出而退出舞臺,事實上停留在PHP 4的應用仍然不少,主要是PHP4的執行速度要比PHP 5快,此外,對於物件導向架構的接受度,也是兩代之間的交戰點,擁護PHP 4的人多半認為物件導向的寫法破壞原有PHP輕巧易用的特性。最新版本PHP 6仍在開發階段,已知有支援Unicode、註冊全域變數等。

PHP除了作為網站開發語言之外,同時也能在命令列環境中使用,此外,也可以用來開發Winodws中的視窗應用程式,不過一般而言,網站開發還是PHP最精擅與適合的領域。


Ruby on Rails登場,衝擊PHP發展 PHP擁有許多傲人優勢,但是Ruby on Rails的出現,仍為PHP社群帶來極大的衝擊。

Ruby on Rails是利用物件導向語言Ruby設計的網頁開發框架,開發者David Heinemeier Hansson在專案開發過程中設計出Ruby on Rails,並在2005年12月釋出第一版公開版本,旋即造成一股RoR熱潮。RoR具備輕巧、漂亮的MVC架構和簡化設定、降低重複工作的原則,使得 開發人員可以在極短的時間內完成網站開發,而有「網站開發快10倍」的稱號;MVC架構與約定性網站配置和命名原則,也使日後維護工作容易進行。

RoR的出現,不但使得過去深為繁複設定工作所苦的Java網站開發人員,眼睛為之一亮,更讓過去以輕巧見長的PHP相形失色。

RoR的衝擊,並非全然因開發框架而起,事實上PHP過去也不乏開發框架,只是情況是「一人一把號,各吹各的調」,有些框架專注在解決部分的問題,有些則是只能應用在特定的系統。

以PHP社群中相當知名的樣板引擎Smarty為例,它可以用來分隔PHP程式和樣面外觀,解決過去PHP和HTML混用的問題,改善了過缺乏結 構的情況。另外Smarty會編譯樣板和PHP,輸出成HTML檔,在樣板沒有變動的情況之下,會加快網頁讀取速度。許多PHP專案都導入Smarty, 以增加開發速度與維護性,不過Smarty架構必須犧牲部分的效能,加上在MVC架構中它僅佔View的部分,對於大型網站所需仍嫌不足。

此外,PHP社群充滿各式各樣的應用程式專案,每個專案中可能就有自己獨特的開發框架。以Lifetype為例,大約在二、三年前就已經採行框架 的方式進行開發,一樣是MVC架構,一樣是物件導向,然而即使架構抽象化成為一套普遍性的網站開發架構,移植到其他專案卻也未必適用。像哇寶國際資訊技術 經理李辰德在開發Zakka時也有一套開發框架,雖然不是完整的MVC架構,但針對電子商務網站開發卻能帶來極高的產能,但如果想移植成部落格平臺的開發 框架,就有其難度。

如果拿PHP和Ruby相比,雖然Ruby的物件導向架構極為漂亮,但是效能遠不如PHP,因此PHP在先天條件上遠優於RoR。另外,從網站的 開發工作而言,PHP已經累積許多資源,例如網頁伺服器的優化、程式的快取機制、與各種資料庫的介接和優化、元件的使用等,這些都是PHP遙遙領先RoR 之處,因此PHP應該比RoR更大有可為才是。

然而無可否認的是,Rails是一個相當進化的架構,提供許多自動化工具,簡化程式開發人員的工作,讓開發工作可以集中力氣在程式和商務邏輯的部 分。因此PHP缺乏的是一個漂亮的架構,而吸納別人的優點成為自己的優點,一直是PHP成長、進步的吸星大法,RoR帶來的衝擊,也成了PHP進步的養 份。

PHP新興框架紛起,加速開發網頁應用程式
PHP為了急起直追RoR的漂亮架構,紛紛推出許多所謂「Rails-like」的框架,比較知名的如Symfony、CakePHP甚至連名字 都抄過來的PHP on Trax等。這些新興的框架,大多從MVC架構、Active Record的OR Mapping機制、scaffold自動生成程式碼或是約定優於配置等原則來發展架構,讓框架來處理煩人的設定工作,開發人員需要撰寫的程式碼也相對減 少,日後的維護工作也更容易進行。

這些發展中的框架或許仍有不足之處,然而PHP社群能在短短時間開發出這麼多的框架,展現PHP驚人的發展力。

除了Rails-like的框架,PHP仍有其他極富競爭力的開發框架,例如Zend推出的「Zend Framework」,集合許多有用元件、函式,發揮了PHP 5的優勢,讓開發人員可以不用重複做相同的工作。

種種新興框架的發展,將使得PHP在網頁應用程式的開發將更具生產力。

以RoR為藍本的PHP框架
框架名稱PHP4 PHP5 官方網站 特色
Biscuit biscuitproject.tigris.org 簡單易學,容易部署,但框架完整性仍不足
Cake PHP www.cakephp.org 輕型框架,無需設定,可自動產生程式碼,易學易用,不過沒有完全發揮PHP5的功能
Code Igniter www.codeigniter.com 無須設定,包含各種一般用途的類別與函式庫,但架構沒支援資料表關聯
PHP on Trax www.phpontrax.com 在PHP5的基礎上,完整移植RoR的架構,不過文件少,社群小,不支援PHP4是其弱點
Symfony www.symfony-project.com 架構完整,功能強大,整合多種框架特色,但使用上稍嫌複雜
Pipeline livepipe.net/pipeline 架構輕簡,適合小型專案,並支援資料表關聯,但資料庫只支援SQLLite

PHP協助企業及早進入Web based的時代 Ruby on Rails之所以能快速竄起的因素很多,但其中之一是Web based應用程式缺乏快速、有效的解決方案。尤其當大企業不斷在思索如何導入SOA,而中、小企業觀望SaaS能為它們帶來什麼樣的效益時,Web應用程式時代已經來臨。

由於PHP是為網頁而生的語言,因此在Web 2.0的時代,它的伸展空間更大。臺灣的部落格平臺如無名小站、Xuite都是以PHP打造,這些使用人數眾多的平臺,足以說明PHP發展出的應用程式平臺,足以負荷高流量。

在應用程式設計上,PHP開發出的程式也越來越容易部署和使用。以Lifetype而言,只要具備MySQL資料庫,即可在Web介面安裝,不但具備環境 偵測功能,告知使用者是否足備足夠的安裝條件。按照預設條件的安裝方式,只要指定部落格的基本資料和管理者帳號與密碼即可。這種友善的安裝方式基本上吸收 了Windows「下一步」式的安裝概念,現在的PHP應用程式專案,大多採用這種安裝方式,以減輕使用者的負擔。因此導入PHP應用程式系統的門檻,已 經不再是網路或PHP的IT技術,而是如何管理特定系統的專業知識,例如CRM系統需具備客戶管理的知識,或是懂得利用商業智慧系統分析企業營運。

此外,高度互動性網頁介面是大勢所趨,PHP也能結合許多網路上的Ajax解決方案,讓開發人員無需自己撰寫即可完成Ajax應用,讓網頁的資訊 更新加倍即時、靈活。李辰德便透過xajax幫Zakka的購物車與後臺管理系統Ajax化,使用者在更新購物車數量或管理人員上、下架產品時,都可在同 一頁面得到結果,使用者無需等待頁面刷新,操作方式也更為直覺、方便。

PHP結合許多現成的元件與框架,能迅速開發出豐富互動效果的網站,提供使用者為簡單易用使用者介面,這些技術往往納入各式企業應用系統,讓企業能在存取性高的網站上管理與生產。

企業對PHP尚缺乏信心
由於網站作為服務平臺或者利用網站串接上、下游資訊的機會越來越普及,例如Zakka便透過Web Services的方式,讓PChome Online的會員資訊可以在Zakka繼續沿用,減少重新註冊的手續。另外像線上金流的處理、和銀行ATM系統配合,精簡對帳作業等等,透過PHP都能 提供Zakka安全、快速、資訊互通的機制。

雖然李辰德採用PHP替Zakka建立系統架構,然而接專案時,有時也會因為客戶本身的喜好而採用Java、.NET等。李辰德分析,企業在採用語言時不免迷信名牌,有時候採用PHP卻可達到相同的效果,而且開發時間可以縮短不少,然而客戶還是覺得用兩大平臺較為心安。

吳信儀認為J2EE平臺美則美矣,但是企業如真的需要用到這樣的規模,還要考量能否承受得起它漫長的開發時間與成本,大概只有像臺積電或宏�公司這種規模的公司,擁有自己專屬的開發團隊,而且需要完整的支援與服務,才有必要用J2EE。

張至寧指出有些企業的網頁開發專案,只是要替ERP系統新增網頁介面。其實透過PHP很快就能建立使用者介面,配合Ajax技術,PHP就能將過去桌面程式的使用經驗,複製到網頁上。

由於臺灣企業的系統,微軟平臺佔的比例相當高,因此直接採用.NET開發的比例相對會比較高,但PHP在微軟平臺上運行的效能不如在Linux上 也是不爭的事實,影響企業接受PHP的意願。不過微軟已經和Zend合作,著手修改PHP在IIS上的效能問題,未來應該會有明顯改善。另外,像IBM或 BEA的企業入口網站產品也都陸續支援PHP,肯定PHP的地位,讓PHP更深入大型企業的領域。因此企業對於PHP的適用性,多半只是信心問題,而非技 術層面因素。

撇開信心、技術等因素,PHP發展至今,的確也有不利進入企業的隱憂,例如學習PHP的門檻低是優點,卻也造成開發人員素質良莠不齊,程度落差 大,企業要篩選到理想的人員要花費較多的力氣。雖然Zend目前已經推出PHP的認證,但是認識到這張證照價值的企業和開發人員尚屬少數,臺灣目前獲取 PHP認證只有三人,日後如能普及,至少方便企業在鑑職PHP人員時,具有基本的指標。

其次是服務支援的問題,這點對於企業在選擇開發語言時,也是重要的參考點。PHP的開發人員雖然可以透過網路尋求資源和協助,但這對企業而言不確 定性太高, 至少選用Java或.NET出問題時,他們可以向昇陽或微軟尋求解決之道。Zend雖然也有提供服務,但究竟遠在國外,遠水救不了近火。

PHP提供企業更易邁入敏捷開發的能力
就技術論技術的話,PHP原本就是為網頁開發而生,歷經幾代改版,物件導向語法越來越完整、清晰,尤其是PHP 6備受期待,將帶來更為完整的架構。

物件導向是不是PHP該走的路一直存有爭議,採用PHP 4仍大有人在,因為在未調校的情況下,它的效能就是比物件導向較完整的PHP 5好。不過如果著眼在嚴謹的開發方式、穩定度與日後維護程式與再利用等考量,物件導向都是必走的路,也是一條通往企業的路。

此外,雖然PHP的框架不斷推陳出新,但是在框架的交替興亡之間,技術仍在演進。PHP社群對RoR不盡全然認同,但也承認它的確是殺手級的框 架,並開始學習含蘊在Rails架構下的智慧,無論日後RoR是否發展得更好或者終究是一時炒作,PHP已經為自己的社群累積更多的資源,以分享給其他開 發人員和企業使用。

PHP諸多基於Web的應用程式,像是CRM、企業入口網站、專案管理、文件管理系統等,都有現成可用的解決方案可以提供給企業使用,更關鍵的是,在服務為導向的時代,企業如何因應快速變動的需求,以最短的期程敏捷開發所需的應用和服務,已經是這個時代不可或缺的競爭力。

PHP也許不是唯一的選擇,但它從元件、框架、應用系統都相當齊備,加上開放原始碼的優勢,可客製化的程度高,對於企業跨入敏捷開發的新時代,將更為容易而穩健。

圖解新世代PHP敏捷開發框架-以CakePHP為例

1.使用者透過網站的「Tasks」功能向應用程式發出列表(index)內容的請求(Request),這個請求將交由Tasks控制器(Controller)來處理。

2.Tasks控制器包含列表(index)、新增(Add)、編輯(Edit)、刪除(Delete)四種方法,這些方法都是由CakePHP代為處理,開發人員無須自行撰寫。在本例收到列表要求之後,控制器會向Task模型(Model)請求資料。

3.在CakePHP中,資料模型和控制器採用單、複數對應的方式,以本例來說,Task資料模型與Tasks控制器對應,透過這種對應方式,CakePHP可以透過命名規則來處理MVC之間的連動,減少設定工作。

4.資料表的命名方式必須採用複數型態,才能與資料模型對應。當控制器的列表要求發出後,資料庫傳回資料,以資料物件的型態傳回給控制器。

5.取得資料之後,控制器則從檢視(views)中找出列表的檢視檔案。在沒有額外指定檢視名稱時,CakePHP會找自找尋同名的檢視檔。

6.包含取得資料的檢視檔,會再一步與網頁外框結合,完成最終使用者將看到的列表內容與樣式。

7.傳送回給使用者,取得最初請求的內容,完成資料模型-控制器-檢視的一連串連動。

PHP讓電子商務網站Zakka重獲新生 2004年成立的Zakka電子商務網站,以販售創意商品雜貨為主。二年前成立時,系統架構是以Windows平臺、IIS網站伺服器搭配SQL Server作為網站的基礎架構,再利用ASP語言開發網站本體。由於包括網站前端的購物程式和後端的進銷存作業全倚賴這套系統,因此Web形同公司的營 運實體,系統的穩定與否直接影響到企業的營收。
然而Zakka電子商務網站上線後,問題卻接踵而來,主要的問題包括庫存不精確、訂單經常有誤和駭客入侵等,造成Zakka一方面在進銷存上無法精確掌握,訂單發生問題也讓客訴不斷,而駭客更是對電子商務網站的商譽和會員資料安全形成威脅。

架構設計不佳,埋下系統不穩病灶
Zakka的系統採外包的方式,當Zakka發現原來的承包公司無法解決這些問題之後,決定撤換原本的承包商,找上哇寶國際資訊技術經理李辰德。

李辰德以電子商務網站的開發為主業,精通Java、.NET和PHP等語言。當他了解Zakka的營運問題之後,發現舊有系統在於開發時,設計者 對於進銷存運作方式不夠了解,因此架構與程式邏輯須重新設計。另外Zakka站方也表達了銷售創意產品對於質感的要求,希望提供使用者最好的線上購物經 驗,甚至連發票的印製都能呈現質感,列印出來的字要精確在位置上,不要產生歪斜不正的情況。

在系統維護上,由於Zakka的系統沒有額外連接ERP系統,全都是透過Web介面來處理後端資料,在改版時,他們也希望網頁使用方式儘量貼近桌 面應用程式的操作習慣。此外,網站會因為節慶或活動而更動版本,希望由Zakka的網頁設計師自行調整,不必要再請程式設計師協助。

經過整個評估之後,李辰德認為以Zakka的需求,透過PHP開發新的網站最為合適。一方面PHP簡單易用,可以縮短開發時間,PHP的資源也夠 多,對於Zakka的一些要求,都可以找到對應的元件或框架可以使用,而且PHP已經有許多電子商務網站如博客來書店採用,成熟度和穩定度都足以信任。

站方後來決定依李辰德的建議,將系統改成LAMP(Linux、Apache、MySQL、PHP)架構,重新打造新版Zakka。

引進多種PHP框架,改善線上服務品質
李辰德接手Zakka設計工作之後,除了重新設計網站庫存與訂單的運作方式之外,他也針對幾個重點改善,分別是強化使用者經驗、精準套印報表、分隔程式與視覺設計、簡化資料庫存取程式碼以及效能整體的改善,以解決過去系統在運作上的種種問題。

在強化使用者經驗方面,李辰德大量使用Ajax技術。以購物車為例,在購物數量有異動時,傳統購物車採行兩種方式,一種是更動完要自行按更新或確 認鍵,另一種雖然會自動更新,但是卻會更新整個頁面,使用者必須花時間等待。李辰德於是善用Ajax非同步化的特性,使用PHP上xajax框架,開發出 Ajax購物車,使用者更動資料時,系統即自動在背景處理,不會影響到使用者後續的動作。這個技術也延伸到後臺的管理機制,管理人員在上、下架產品時,完 全不用等待頁面更新,使用經驗就和桌面應用程式一樣。

由於Zakka自製發票,在套印列表時要求精確,於是李辰德利用PHP上有悠久歷史的FPDF函式庫,精準處理發票套印動作。

在分隔程式與視覺設計上,李辰德引進了Smarty框架,能讓樣版與PHP的程式完全分離,網頁設計師能在設計軟體上自製樣版,套入變數之後上傳即可更新。由於不需要更動PHP程式,因此過程也就不需要程式設計人員介入,增加站方作業速度。

由於日後有可能更換資料庫,為了保持這樣的彈性,系統在設計時也導入了ADOdb,程式設計師只需要使用ADOdb的語法來撰寫資料庫語法,它會自動轉換對映到資料庫所需的語法,因此日後即使改換資料庫,程式也不需要重寫。

透過快取機制,調整系統執行效能
為了達到架構的完整性與彈性,有時必須引進犧牲效能的框架,像是Smarty和ADOdb等,然而電子商務的使用人數如果一多,效能拖累就會非常 明顯。因此必須啟用框架內的快取的機制來解決效能瓶頸。例如ADOdb可以將SQL的查詢結果快取到磁碟中,如果有相同的查詢,就可以傳回預先儲下的結 果,不用再去資料庫中撈取資料。

另外,Smarty也有類似的功能:將PHP和樣版編譯成靜態網頁檔,如果內容沒改變的話,使用者直接取用靜態網頁檔,以降低程式編繹的效能耗損。

除了利用上述框架的快取機制,Zakka也運用eAccelerator強化系統效能,它能將程式快取在記憶體中,即使當連線人數多,由於在記憶體處理速度快,效能就不會被頻繁的I/O動作拖累,導致效能低落。

透過PHP的強化,不但解決Zakka過去營運庫存或訂單的錯誤,另外也提升了服務的品質,讓Zakka不論從出售的產品到網路的購物經驗,處處都能展現質感。

PHP搶救網站大作戰

以販售創意商品雜貨為主Zakka電子商務網站,原有架構主發生庫存不精確、訂單經常有誤和駭客入侵等問題,造成庫存、訂單難以掌握。

此外,站方希望網站可以提供更好的服務與形象。在分析問題之後,改革方向決定替換原有系統架構,以最能發揮PHP功效的LAMP組合重新打造Zakka。

網 站除了處理原來系統不穩定的問題之外,更結合了多種PHP資源,強化系統在使用者介面、發票套印、系統維護與效能等面向,讓Zakka不但能解決原有箇 疾,更能藉由系統的改善,一改過去忙於解決問題的窘境。PHP成功讓Zakka一直要求的質感得以呈現,也將網站的品質與服務傳遞給使用者。

Zakka原本使用Windows平臺,透過ASP開發網站,然而上線之後系統一直出現問題,庫存一直無法精確統計,訂單也經常發生錯單,造成客訴不斷。 駭客的問題也因為開發人員未能在程式上做好防護,而讓駭客得以透過XSS的手法入侵,植入木馬。由於發生的頻率很高,經常須要人工去處理,也影響了企業的 形象。種種問題使得Zakka站方決定重起爐杜,更換原有的外包公司,並重新架構系統。

選用PHP
˙使用簡易,亦於維護
˙開發資源多,輪子不用再造
˙已進入成熟期,且有多數知名網站採用

強化方案
˙解決資料不一致性問題,增加穩定度
˙提高安全性設計
強化方案
用eAccelerator快取機制強化效能,或加上:
˙強化方案1:Smarty分隔程式與視覺設計
˙強化方案2:透過ADOdb簡化資料庫存取
˙強化方案3:xajax強化使用者經驗
˙強化方案4:使用FPDF精準套印發票

Zakka新架構的資料數據,都經過層層的Transaction之後才寫入資料庫,確保庫存及訂單狀態正確,並且可串接外部系統處理帳務,增加服務會員速度。

系統為取得架構的完整性與效能的平衡,導入了多樣化快取處理,不會因為系統易於維護的考量,而降低存取速度。


加入Lifetype開發團隊,熟悉PHP物件導向的開發方式之餘,也更深化對PHP的認識

吳信儀/Mark
● LifeType開發團隊
● 個人部落格: blog.markplace.net

吳信儀接觸PHP的時間非常早,大約6年前就開始使用,但是他認為在3年前加入Lifetype社群之後,才有眼界大開的感覺。由於Lifetype的領 導人Oscar物件導向的觀念很深,也造成了這個部落格平臺的物件導向特性。這也使得吳信儀在PHP的使用上,精熟於物件導向的概念,而能將 Lifetype在PHP 5運行時的效能問題調整到最低,幾近於在PHP 4上運行。

Lifetype在二、三年前就使用框架的開發方式,同樣也是MVC架構,因此面對這一波RoR掀起的框架風,吳信儀往往能用持平的角度來看,既 能了解RoR的優美之處,也指出像可運行RoR的虛擬主機不足、提升效能要有專業知識等問題,這些都是一般談論RoR快速開發時容易輕忽的議題。

也因此,他雖然看好RoR的發展,但也認為RoR的前面並非一片坦途,相較之下,PHP資源多,人才多,以目前的條件,PHP在企業的適用性更高。

大體而言,雖然PHP框架或應用程式不斷經歷生生死死的過程,吳信儀認為當中進步的軌跡還是看得到,這也是PHP能源源不絕發展的重要原因。

PHP可大可小,隨人運用

黃雋/ Jimmy
● Drupal開發團隊
● 個人部落格: www.j2.idv.tw/jimmy

PHP可大可小,黃雋覺得自由度是它最為迷人的地方。比較Drupal和Lifetyp之間的異同,他認為Lifetype有嚴謹的物件導向架 構,Drupal則沒有,但是兩者都可以建立出良好的應用程式和框架。以他自己而言,他覺得Drupal很好用,也不見非要物件導向的架構。

黃雋覺得可惜的是,雖然PHP是很好的工具,但卻因為它是開放原始碼,許多客戶會刻意壓低預算,造成PHP的人才和人力的耗損。

PHP讓程式開發人員保有自由的思考

張至寧/ Eddy
● Joomla開發團隊
● 個人部落格:eddychang.blogspot.com

現在的程式開發人員,有過於倚賴工具的傾向,張至寧觀察有些人沒有工具根本就沒辦法撰寫程式,造成人役於物的結果。工具原本只是要方便人開發程式,但如果沒有工具就不知道如何開發,那就代表專業能力不足。

以PHP而言,只要打開Windows的記事本就可以開始寫程式,一切都是從空白的頁面開始,由程式人員自己去思考與創造,因此撰寫PHP的開發人員,需要有無中生有的專業能力,也不會被工具的框架所限制。

此外,雖然PHP語法看起來不夠漂亮,但是自由度高,如運用得當,一樣可以看起來很優雅,這些都是PHP的好處。

PHP認證最大的意義在檢視自己功力

姜鐘凱/Darkhero
● 臺灣第二位PHP認証通過的開發人員
● 個人部落格: blog.darkhero.net

出於想了解自己實力的想法,姜鐘凱於是去報考Zend舉辦的PHP認証,事先並沒有多讀其他書籍,只是透過線上的練習題了解題型與方向,結果便順利過關。

姜鐘凱報考的PHP 4版本的認證,考試的範圍不脫字串處理、日期處理、陣列處理、傳值、傳址和安全等方向。目前PHP 5的考試範圍已大為增加,而且Zend還發電子郵件向通過認證的人募集題目,考題的思維必然更為靈活、多元,但重點應該還是在基本觀念上。

姜鐘凱認為PHP認證的鍍金效果有限,比較重要的是藉由考試來檢核自己的實力夠不夠穩固。許多PHP開發人員是非科班出身或因為專案才學,通常只 專精在某些部分,但不見得能全盤掌握PHP。因此藉由準備考試的機會,才能更清楚知道自己對PHP的認識還有哪些地方不夠清楚。比如說過去他在寫程式時, 宣告一個新的物件,從來沒去考慮這是參考還是傳址,直到準備考試時,他才發現以前忽略的地方。

除了到手的PHP認證,MySQL也是他計畫取得一張認證,畢竟PHP和MySQL之間的關係很緊密。姜鐘凱希望藉由考試的機會,更深入了解MySQL本身的特性。

Smarty增加PHP程式獨立性

朱建志/JaceJu
●著有《PHP Smarty 樣版引擎》
● 個人部落格:blog.roodo.com/jaceju

朱建志當初是因為工作需要才接觸到樣版引擎,一開始用的框架中,樣版和程式分離得不夠徹底,客戶一旦要修改外觀,他就必須修改程式,過程不勝其擾,於是想找新的樣板引擎替代,這時他才發現Smarty。

改用Smarty之後,PHP程式只負責將資料丟給樣版引擎,至於怎麼去產生畫面就與PHP無關,資料處理的邏輯全都在樣板上。因此PHP不但可 以保持精簡,變動的機會也不大。客戶需要改變視覺設計時,只要調整樣板即可。Smarty雖然存在一些效能和語法習慣的問題,但以MVC架構觀點來看 Smarty,在View這個部分的角色仍相當稱職。


--
萬歲!您的郵件已被捨棄。一封垃圾郵件也沒有!

沒有留言: