惠新宸於2011年8月加入PHP語言官方開發小組,目前是該組織的唯一一位國人,也是國內最具影響力的PHP技術專家之一。 惠新宸身為知名PHP技術部落格「風雪之隅」(http://www.laruence.com/)的博主, 一直專注於與PHP底層原理的研究與分享。 其中《深入理解PHP原理》系列文章被廣泛推薦, 成為國內PHP語言深度使用和客製化的經典入門教材。他基於PHP擴展開發的PHP框架Yaf, 被譽為最快的PHP開發框架。同時他還是Lua,Taint等PHP擴展的作者。在PHP 5.4開發過程中,他總共為PHP貢獻了近400個交付。本次我們對惠新宸進行了一次採訪,請他分享PHP框架和擴展的知識,以及PHP發展的情況。
InfoQ:請簡單的介紹一下您自己,以及您目前所在團隊的狀況。
惠新宸:大家好,我是惠新宸,陝北人, PHP圈很多朋友叫我鳥哥,趁著這個機會和大家解釋下,我不是《Linux私房菜》的鳥哥,我只是IM暱稱叫”雪候鳥”,又因為在百度的時候,我在工程師中算年長,所以大家才開始這麼叫。
目前我在新浪微博應用架構團隊工作,我們應用架構團隊主要致力於新浪微博LAMP的架構最佳化,以適應高效能和快速開發的需求。
微博每天PV數十億,產生數T級別的數據, 處理過程中任何一個毫秒的優化,一個byte的減少,對我們都是意義重大,這個工作非常有意思也很有挑戰, 到目前為止,我們團隊已經通過一些不改動業務邏輯的優化方法,把微博首頁的回應時間降低了44%,TPS提升了78%。另外,我們團隊也負責技術提升和沈澱工作,這也是一項很有趣的工作,因為分享能讓我們收穫更多。
InfoQ:作為PHP語言官方開發組的唯一一位國人,請您談談加入這個組織之後的一些體會。
惠新宸:「唯一一位」這個頭銜肯定是暫時的,我相信未來會有更多國內開發者加入。我是去年8月份加入PHP開發組, 開發組是一個開源組織, 準確的說,我們應該被稱為Commiters(提交者),有很多不是開發組的同學為PHP提供Patch。
加入以後我對如何運作一個開源專案有了一些新的體會, 其中讓我感受最深的就是各種流程規格。大到發布一個版本的流程規範,小到一個新特性增加的流程規範,這些看似繁瑣的規範,雖然一定程度上導致響應速度緩慢,但卻保證了PHP在成長過程中,盡量不出大事故。
還有一個體會就是, 英語對於技術工作者來說真的很重要,我現在特別後悔本科時沒好好學習英語, 雖然我閱讀資料沒什麼問題,但是在日常交流的時候經常鬧笑話,有個段子,就是開發組有個開發者說,要理解我說的話,需要像讀正規表示式一樣。
InfoQ:長期關注你部落格的人都知道,你一直致力於PHP推廣工作,你個人也在國內最大的幾家網路公司工作過,能談談PHP在國內的發展狀況嗎?
惠新宸:之前在我的部落格上,我也分享過一個數字,就是全球前100萬的站點中,有超過70%的站點是使用PHP開發的。在我看來,PHP易學、易用、易擴展是它能如此流行的主要原因, 易學易用我就不多說,這裡我想主要說一下PHP可擴展性。
PHP提供了一套很強大的擴充建置系統, 使用這套擴充建置系統,我們可以很方便的擴充PHP功能,在PECL擴充庫中,目前已經有超過200個標準擴充。
我在2008年開始做PHP擴充時,網路上幾乎沒什麼相關的中文資料,而現在我們看到,網路資料非常豐富。 越來越多的開發者嘗試透過擴展PHP來解決他們遇到的問題,而PHP的開源精神,又或多或少影響開發者把這些擴展開源給社區,這些正是我認為PHP可以長期發展下去的主要動力。
InfoQ:您是開源框架Yaf的作者,請簡單介紹一下開源框架Yaf的特點。
惠新宸:長久以來,關於PHP要不要使用框架有很多爭論,比較常見的矛盾點是,使用框架後,開發速度變快但性能得不到保證。
Yaf是為了解決這個矛盾點而開發的,它是一個用PHP擴展方式(C語言)實現PHP的MVC框架,它最大特點是高性能(相比於傳統用PHP實現的框架),低資源消耗,同時又能確保快速開發。
Yaf主要提供了路由,分發,自動加載,插件機制,以及一個簡單高性能的視圖引擎, 這些功能是每個MVC框架必備的,又具有一定不易變性, 所以適合用擴展來實現。
InfoQ:關於Yaf框架,您下一步有什麼開發計畫?
惠新宸:我的觀點是,Yaf未來應該朝做精做專的方向發展,例如Yaf 2.0與Yaf 1.0相比,並沒有增加新功能,主要是架構重新設計和效能調優。 我不希望Yaf成為想要涵蓋一切功能的”超大全”,我只希望它能為追求高性能的開發者提供一個簡單高效及可擴展的工具,為”低碳”生活做貢獻。
另外,我想感謝喜歡Yaf的朋友們,Yaf目前在社區有很多用戶,這點是我最初發布Yaf的時候沒有想到的,一些很熱心的朋友為Yaf提供Windows下的發布,建立了使用者交流論壇、QQ群等,這些事情我有心但沒有精力做,他們的熱情是驅使我不斷完善Yaf的動力,非常感謝這些朋友。
InfoQ:能否對Zend、Yii、CakePHP這幾個PHP框架進行簡單的優劣勢分析?
惠新宸:這幾個框架都是很優秀的PHP框架,我在以前的專案中使用過Zend和Yii, 但可惜沒有機會用CakePHP, 說說我個人的理解吧。
Zend Framework是Zend公司開發的PHP開發框架,它設計精良,功能強大,有很廣的使用者,文檔齊全,社群也比較活躍。它的程式碼寫得規範工整,非常適合PHP開發者去閱讀和學習。缺點就是稍顯臃腫,性能偏低。
我對Yii印象最深刻的是AR,在實際開發中非常方便, 並且提供了系統的自動生成工具,我個人非常喜歡Yii。 然而AR的缺點也很明顯,資源佔用很大,不適合大數據量應用。
InfoQ:請推薦三個您開發的PHP擴展,為什麼您推薦這三個擴展?
惠新宸:我寫擴展開源出來的就4個,按照時間順序是Yaf,Lua,Taint,Couchbase。它們各自要解決的問題不同, 我簡單介紹一下這幾個擴充。
Yaf前面介紹過了,這裡不再重複。
Lua是在PHP擴充中對Lua引擎的封裝,支援在PHP中執行Lua腳本,並能與Lua腳本交換資料。 Taint是一個XSS,Sql&Shell injection偵測擴展,它主要是為了彌補一些靜態偵測腳本不能覆蓋到的點。
Couchbase是一個對Couchbase Client的封裝,Couchbase Server是一個高效能高即時性的K-V資料庫。順便提一下,我們新浪微博應用架構團隊,還在為新浪微博開發一些擴展,這些擴展是為微博解決一些實際問題, 等這些擴展可用性和穩定性得到驗證之後,我們會開源出來回饋社區的。