究竟是什么令微軟為Windows改進(jìn)PHP
微軟正在努力改進(jìn)PHP在Windows上的運(yùn)行速度,看來微軟對開源社區(qū)日漸支持。從另一方面看,51CTO從***一期編程語言排行榜上看到,PHP份額在逐步上升。
微軟開源社區(qū)主管Garrett Serack最近接受了媒體采訪,談?wù)摿宋④洖閷?shí)現(xiàn)這一目標(biāo)所做的努力。
在Windows部署PHP應(yīng)用性能欠佳
數(shù)年以來,PHP開發(fā)者或許可能會選擇在Windows上進(jìn)行開發(fā)工作,但卻很少有人選擇將PHP程序部署在Windows上。Serack表示,出現(xiàn)這個結(jié)果不是沒有道理的。他表示,“當(dāng)用戶在Windows上高興的運(yùn)行一個PHP應(yīng)用時,IIS可能會突然崩潰,而且沒人知道其原因何在?,F(xiàn)有PHP驅(qū)動器基于老協(xié)議,性能不高。而原因在于PHP社區(qū)缺少完善它所必需的信息?!?/P>
Serack認(rèn)為,自從微軟開發(fā)者了解到使用PHP語言可以開發(fā)第三方應(yīng)用,微軟就面臨著一個新問題。微軟逐漸開始意識到,開發(fā)者之所以不在Windows上部署PHP,原因是他們無法使用,并且微軟內(nèi)部的一部分人開始準(zhǔn)備做出改變。自此之后,Serack的大部分時間都花在這個工作上。
微軟改善Windows對PHP的支持
首先鼓勵微軟改善Windows對PHP支持的是SQL Server團(tuán)隊(duì),它希望讓現(xiàn)有開源應(yīng)用可以更好的使用SQL Server驅(qū)動。也就是說,他們希望開發(fā)者在Windows上部署PHP應(yīng)用時,使用SQL Server而不是MySQL,或者說至少是為了減少人們對自己的批評。2007年10月,***新改進(jìn)版的Windows PHP驅(qū)動發(fā)布。但卻并未被開源社區(qū)所接受,于是SQL Server團(tuán)隊(duì)又再次對其進(jìn)行修改,以實(shí)現(xiàn)人們真正想要的功能。
圖 PHP運(yùn)行在Windows Server 2008下:性能提高130%
非常自然,該團(tuán)隊(duì)希望把修改后的代碼反饋給開源社區(qū)。據(jù)Serack表示,這意味著需要和微軟法律團(tuán)隊(duì)進(jìn)行多次溝通,才能獲準(zhǔn)共享該代碼。這個法律過程花費(fèi)了數(shù)月時間,因?yàn)閷ξ④泚碚f,開源代碼依然是一件比較新鮮的事情。但并非微軟自己才面臨這種挑戰(zhàn),正如Serack所指出的那樣,“每一個向開源社區(qū)共享代碼的大公司都要經(jīng)過類似的法律審批過程?!?/P>
不管怎樣,在去年的OSCON大會上,微軟向Adobe和其它項(xiàng)目提交了代碼。Serack表示,“大約去年這個時候,微軟開源軟件實(shí)驗(yàn)室工作人員希望加速PHP在Windows上的開發(fā)?!碑?dāng)時Pierre Joye有空閑時間,因此微軟讓他與Serack共同實(shí)現(xiàn)以下目標(biāo):在Windows上完善PHP。
同時,Serack開始完善Windows PHP生成過程,重新為其編寫腳本。由于涉及到如此多其它項(xiàng)目,他不得不創(chuàng)建工具后又重建更多工具。他表示,“我希望包含所有DLL?!彼麆?chuàng)建了一個跟蹤工具,來跟蹤正在被創(chuàng)建的內(nèi)容,并創(chuàng)建了全新的Visual Studio項(xiàng)目文件。Serack欣慰的表示,“再也不需要make文件和定制批處理腳本了?!?/P>
僅僅通過上述改進(jìn),核心解釋器基準(zhǔn)測試的速度與PHP在Linux上運(yùn)行速度的差距就縮小到1%以內(nèi)。接下來,Serack創(chuàng)建了一個二進(jìn)制工具,并通過它運(yùn)行真實(shí)數(shù)據(jù)(也就是真正的PHP腳本),提供規(guī)范的數(shù)據(jù)給編譯器。配置文件導(dǎo)引優(yōu)化(Profile-Guided Optimization,PGO)是Visual Studio最酷功能之一,這一點(diǎn)已經(jīng)被.NET開發(fā)者朋友所證實(shí)。這使其核心解釋器的速度快了18%左右,而且未修改一行代碼,只是修改了生成過程。
完善生成過程并不是一件沒有意義的任務(wù)。讓每一個模塊使用相同且正確的設(shè)置被編譯需要花點(diǎn)時間。Serack表示,“如果一個庫使用不同的優(yōu)化,它就不正常了?!?/P>
他表示,Joye還更換了一些老的程序庫。舉例來說,POSIX正則表達(dá)式函數(shù)庫已經(jīng)有大約10年歷史。Serack表示,創(chuàng)建新版依賴庫對性能有較大影響,但同時對可靠性也具有較大影響。
現(xiàn)在并非說該任務(wù)已經(jīng)完全完成。所謂開源項(xiàng)目,或開發(fā)項(xiàng)目,就如同寫長篇小說一樣,編程永遠(yuǎn)不會完成,只有被放棄。Serack表示,“我們還正在進(jìn)行一些努力?!迸e例來說,與Linux相比,Windows的文件系統(tǒng)實(shí)現(xiàn)有不同之處。而且他承認(rèn),“在現(xiàn)實(shí)世界應(yīng)用中,在性能方面我們還難言成功。但是至少我們已經(jīng)擁有了這個真正穩(wěn)定的平臺?!?/P>
有人或許認(rèn)為:“微軟?開源?承諾?你一定是在開玩笑?!盨erack本人最初也不輕信這種態(tài)度。實(shí)際上,微軟在進(jìn)行Windows上的PHP改進(jìn)時,故意保持非常低調(diào)的態(tài)度。Serack表示,“我們不想得罪別人,我們的目標(biāo)是讓PHP很好的運(yùn)行在Windows上。我們希望對PHP作出共享,而不是分裂它。那是我們連想也不會想的事情。我們通過共享代碼來參與到社區(qū)中,而非控制社區(qū)?!?/P>
Serack的目標(biāo)就是簡單的讓PHP更好的運(yùn)行在Windows上。他對開發(fā)者的反響感到激動,“太棒了!我已經(jīng)擁有一個Windows服務(wù)器?,F(xiàn)在我不用再買一臺來運(yùn)行我的PHP應(yīng)用了?!?/P>
Serack十分歡迎來自PHP社區(qū)的幫助和建議;他希望人們能夠發(fā)表自己的觀點(diǎn),談?wù)勅绾卧赪indows上更好運(yùn)行PHP,尤其是歡迎開發(fā)者提出能夠幫助跟蹤問題和優(yōu)化的意見。他表示,“如果有錯,讓我們一起修改?!?/P>
Serack表示,“我們已經(jīng)讓人們做出選擇,現(xiàn)在他們可以在Windows上部署PHP,并能夠正常運(yùn)行它們。”
【編輯推薦】