揭秘微軟究竟如何為Windows改進PHP?

2021-05-21 12:18:07 字數 2450 閱讀 6803

2023年09月07日 16:35

it168.com

文字tag: php windows 7

【it168 專稿】微軟示愛開源社群已經不是一件新鮮事,最近的乙個證明是,微軟正在努力讓php可以更好的執行在windows上,微軟開源社群主管garrett serack最近接受了**採訪,談論了微軟為實現這一目標所做的努力。

在windows部署php應用 效能差

數年以來,php開發者或許可能會選擇在windows上進行開發工作,但卻很少有人選擇將php程式部署在windows上。serack表示,出現這個結果不是沒有道理的。他表示,「當使用者在windows上高興的執行乙個php應用時,iis可能會突然崩潰,而且沒人知道其原因何在。現有php驅動器基於老協議,效能不高。而原因在於php社群缺少完善它所必需的資訊。」

serack認為,自從微軟開發者了解到使用php語言可以開發第三方應用,微軟就面臨著乙個新問題。微軟逐漸開始意識到,開發者之所以不在windows上部署php,原因是他們無法使用,並且微軟內部的一部分人開始準備做出改變。自此之後,serack的大部分時間都花在這個工作上。

微軟改善windows對php的支援

首先鼓勵微軟改善windows對php支援的是sql server團隊,它希望讓現有開源應用可以更好的使用sql server驅動。也就是說,他們希望開發者在windows上部署php應用時,使用sql server而不是mysql,或者說至少是為了減少人們對自己的批評。2023年10月,首個新改進版的windows php驅動發布。但卻並未被開源社群所接受,於是sql server團隊又再次對其進行修改,以實現人們真正想要的功能。

非常自然,該團隊希望把修改後的**反饋給開源社群。據serack表示,這意味著需要和微軟法律團隊進行多次溝通,才能獲准共享該**。這個法律過程花費了數月時間,因為對微軟來說,開源**依然是一件比較新鮮的事情。但並非微軟自己才面臨這種挑戰,正如serack所指出的那樣,「每乙個向開源社群共享**的大公司都要經過類似的法律審批過程。」

不管怎樣,在去年的oscon大會上,微軟向adobe和其它專案提交了**。serack表示,「大約去年這個時候,微軟開源軟體實驗室工作人員希望加速php在windows上的開發。」當時pierre joye有空閒時間,因此微軟讓他與serack共同實現以下目標:在windows上完善php。

同時,serack開始完善windows php生成過程,重新為其編寫指令碼。由於涉及到如此多其它專案,他不得不建立工具後又重建更多工具。他表示,「我希望包含所有dll。」他建立了乙個跟蹤工具,來跟蹤正在被建立的內容,並建立了全新的visual studio專案檔案。serack欣慰的表示,「再也不需要make檔案和定製批處理指令碼了。」

內容導航

僅僅通過上述改進,核心直譯器基準測試的速度與php在linux上執行速度的差距就縮小到1%以內。接下來,serack建立了乙個二進位制工具,並通過它執行真實資料(也就是真正的php指令碼),提供規範的資料給編譯器。配置檔案導引優化(profile-guided optimization,pgo)是visual studio最酷功能之一,這一點已經被.net開發者朋友所證實。這使其核心直譯器的速度快了18%左右,而且未修改一行**,只是修改了生成過程。

完善生成過程並不是一件沒有意義的任務。讓每乙個模組使用相同且正確的設定被編譯需要花點時間。serack表示,「如果乙個庫使用不同的優化,它就不正常了。」

他表示,joye還更換了一些老的程式庫。舉例來說,posix正規表示式函式庫已經有大約10年歷史。serack表示,建立新版依賴庫對效能有較大影響,但同時對可靠性也具有較大影響。

現在並非說該任務已經完全完成。所謂開源專案,或開發專案,就如同寫長篇**一樣,程式設計永遠不會完成,只有被放棄。serack表示,「我們還正在進行一些努力。」舉例來說,與linux相比,windows的檔案系統實現有不同之處。而且他承認,「在現實世界應用中,在效能方面我們還難言成功。但是至少我們已經擁有了這個真正穩定的平台。」

有人或許認為:「微軟?開源?承諾?你一定是在開玩笑。」serack本人最初也不輕信這種態度。實際上,微軟在進行windows上的php改進時,故意保持非常低調的態度。serack表示,「我們不想得罪別人,我們的目標是讓php很好的執行在windows上。我們希望對php作出共享,而不是**它。那是我們連想也不會想的事情。我們通過共享**來參與到社群中,而非控制社群。」

serack的目標就是簡單的讓php更好的執行在windows上。他對開發者的反響感到激動,「太棒了!我已經擁有乙個windows伺服器。現在我不用再買一台來執行我的php應用了。」

serack十分歡迎來自php社群的幫助和建議;他希望人們能夠發表自己的觀點,談談如何在windows上更好執行php,尤其是歡迎開發者提出能夠幫助跟蹤問題和優化的意見。他表示,「如果有錯,讓我們一起修改。」

serack表示,「我們已經讓人們做出選擇,現在他們可以在windows上部署php,並能夠正常執行它們。」

TPS究竟如何計算

tps,即transaction per second,每秒事務數。是衡量系統效能的乙個非常重要的指標。每當 有活動時,特別是秒殺類活動,我們都需要預估一下系統效能,其中就有tps。然而tps的估算方式可謂眾說紛紜,許多相關概念也都夾纏不清。所以今天,我們就來好好理一理。對於併發使用者數,這裡還有個...

Qookeeper集群選主機制究竟如何實現

zookeeper作為分布式協調工具,具有很廣泛的應用,zookeeper集群選主機制究竟如何實現?下面來進行分析。在zookeeper集群中,主要分為三者角色,而每乙個節點同時只能扮演一種角色,這三種角色分別是 1 leader 接受所有follower的提案請求並統一協調發起提案的投票,負責與所...

ISV揭秘 雲市場如何為多方賦能

4月19 21日的 2016雲棲大會深圳峰會 有前沿技術深度分享 workshop阿里雲開放實驗室 行業企業聚會 tech insight實戰乾貨,更有20 場分論壇,120 高濃度實戰演講,100 阿里核心技術專家。為了讓大家更為深入地了解雲棲大會深圳峰會的日程設定,雲棲社群對20 位分論壇出品人...