Quantcast
Channel: iThome
Viewing all articles
Browse latest Browse all 31404

PHP 7幕後開發故事大公開

$
0
0

2014年,幾位PHP開發者展開了新一代PHP版本的開發專案,為了提高效能,甚至重新改寫了PHP語言的程式碼,結果發現提高了3成效能,但向社群公開了初步開發成果後,卻一度遭受排擠,甚至差點無法問世。

最初幾位參與PHP 7計畫的核心開發者中,其中一位是目前任職於中國鏈家網技術副總裁兼總架構師惠新宸(網路暱稱:鳥哥),在PHP 7發布之際,他也上網分享了開發PHP 7過程的幕後故事,揭露了這個因效能優異而大受矚目的PHP 版本,兩年來首度公開的幕後開發故事,整理如下。

惠新宸投入開源也有4、5年的時間,從最初的Yaf(Yet another framework)框架,到最新剛釋出的PHP 7,他參與過專案越來越多,使用他所開發程式碼的用戶也越來越多,PHP 7釋出的日子是他從事開源以來的最重要的一項里程碑,為了紀念這一天,惠新宸也在新版釋出前夕分享了這近2年來的心情。

PHP 7專案開始於2014年春節的時候,當時因為無法得到期望的結果,惠新宸的團隊擱置了以PHP-5.5所進行的Opcache JIT專案。從開發這個JIT專案的過程所收集到的資訊,讓惠新宸認識到,PHP的基礎還不夠好,不能很好地支持JIT。所以,在2014年2月左右,惠新宸和其他核心開發者展開了重構專案,當時目標是希望通過重構,來得到30%以上的效能提升,作為將來進一步優化PHP的基礎。

那時,他們還沒有為這個專案命名,只是試試看。開頭幾個月,也是惠新宸最忙碌的時刻,因為起初只有Dmitry和惠新宸兩個人投入這項專案。而惠新宸當時還任職於新浪微博,擔任平臺與大資料部總架構師,工作繁忙,因此只能利用晚上的時間來參與PHP重構專案。幸好,Dmitry這位核心開發者位於俄羅斯,雙方有5個小時的時差,因此,很多工作可以相互銜接。.

隨著專案的推進,他們驚喜地發現性能提升比原先想像的還要大,到4月的時候,另外一個核心開發者Nikita Popov也加入了專案,開發速度加快了不少,到了5月時,已經完成了大部分的重構工作,於是,惠新宸他們對外公開了這個成果,並將專案定名為PHP NG(PHP New Generation)專案,也就是新一代PHP之意。

但惠新宸坦言,他沒想到的是,公布後卻遇到了來自開源社群很大的阻力,因為當惠新宸他們秘密開發PHP NG的時候,PHP社群中還同時進行著一個以微軟成員為主發起的64位元支援專案。在PHP NG一公開時,另一組專案的成員提出不少質疑,他們認為,突然提出這麼大型的一項更新,當時其他開發者對這個版本不了解,後續難以維護這個更新的程式碼,如何和64位元支援的分支版本合併也是一個問題,因而反對採納PHP NG的分支版本。

當時惠新宸非常沮喪,持續很長一段時間的爭吵也讓他感到非常疲倦,最後,惠新宸忍不住滿腔怒火,也不管自己的蹩腳英文,就在郵件群組中回了一封吐槽,來呼籲大家珍惜這個大幅提高效能的PHP分支版本。.

PHP NG的支持者很多,他們也對這樣的爭吵很鬱悶,某天,有一些支持者就在PHP官網上發布了一篇文章,提到PHP內部開發者只顧著改良PHP的功能,只要極少數人能夠聚焦在效能優化上。但當天反對者們就說,不行,PHP NG專案還沒有被接納,不能視為官方消息而要求刪除這篇文章,後來考慮到到文章已經發出去了,最後就在PHP首頁上移出了這篇文章的連結,只是備份資料中保留了內容,當然已有很多媒體察覺到了這次發文烏龍。

爭執不下之後,不得已,最後只能在社群發起投票來決定是否接納PHP NG專案。最後投票結果,大部分的人都支持了PHP NG專案,並決定以PHP NG為基礎,來展開新版PHP的開發。當時還沒有確定將用PHP 6還是PHP 7的版本號(後來才投票決定採用PHP 7)。惠新宸開玩笑地說,這次經歷讓他感受到了「民主之痛」。

之後的事情就如眾所皆知的,在近兩年時間裡,後續增加了許多新特性,持續提升性能,以前許多不合理的設計也改進了,這些變化都加入PHP 7專案,讓PHP 7的功能越來越豐富。從最底層的ZVAL改變,到標量類型提示,最初只有30%的效能提升,到現在正式版本發布時具有100%的效能飛躍。「每一處變化都讓人期待,雖然經過幾次不情願的跳票,終於,到今天,這一切都將呈現於你面前。」惠新宸說。

惠新宸也承諾,未來,開發團隊還會一如既往地致力於提升PHP的效能,提升PHP的品質,讓更多的PHPer們可以持續享受到透明的提升。

 

 惠新宸小檔案 

是中國最具影響力的PHP技術專家,於2011年8月成為PHP核心開發人員加入PHP語言官方開發組。他開發了PHP New Generation(也就是後來的PHP 7)。他也是Zend公司外聘顧問,負責PHP Zend引擎以及Zend Optimizer 的開發和維護。另外他也參與多項開源專案,是PECL開發者,貢獻了Yaf(Yet another framework),Yar(Yet another RPC framework)以及Yac(Yet another Cache)、Taint等多個優秀開源作品,同時也是APC,Opcache,Msgpack等專案的維護者。曾擔任新浪微博平臺與大資料部總架構師,現任職鏈家網,擔任技術副總裁兼總架構師。


Viewing all articles
Browse latest Browse all 31404

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>