設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 703|回復: 0
打印 上一主題 下一主題

10年漫長等待,PHP 7終於問世

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2016-2-25 15:41:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經過10年的漫長等待,PHP 7終於正式問世了。這個影響全球8成網站的開發語言,一舉從5.0版,跳過了功敗垂成的6.0版,一舉進入了7.0時代。
這個版本,PHP開發者們足足等了10年。
繼2004年的PHP 5之後,PHP官網終於發布了磨劍10年的PHP 7.0新版本。
這是189位開源開發者,花了兩年時間,送出超過1萬次程式碼更新,才完成的新版本。
20年前初夏,1995年6月8日,一位愛解決問題的C語言軟體工程師,苦於不知如何用C來做一個自己的個人首頁。
因為在網頁開發技術剛起步的這個時候,沒有人提供出C語言版的網頁開發環境。
他索性決定自己來寫一個,並命名為Personal Home Page Tools,簡稱PHP Tool。
這就是日後用來開發出Facebook、Yahoo等全球2億多個網站的PHP語言最初的版本。
而這位開發者,就是日後揚名開發界的PHP之父Rasmus Lerdorf。
PHP隨著網際網路從1996年開始起飛,也迅速成為開發人員打造網站的首選技術。
2008年,光在臺灣每4個網站就有一個採用PHP
PHP語言一路跟著作業系統,從32位元架構開始跨入64位元,在2004年推出的PHP 5更是一個體質大改造的版本,順利地跨入了物件導向架構的世界,
穩坐網站開發技術龍頭。即使微軟打著容易上手為號召,以ASP網站開發技術搶攻市場,PHP仍是許多網站開發者心目中的首選。
2008年時,光在臺灣,每4個網站,至少有1個是採用PHP開發。
不過,在快速進化的IT世界中,越早出現的技術,往往也背負了越重的轉型包袱。
2005年時,PHP在Unicode的支援過程上,重重摔了一跤。
Unicode支援原本要成為PHP 6的主打特色,但在開發社群中對多國語言支援的爭論,和PHP效能議題的質疑,衍生出了漫長的拉扯論戰,也延宕了PHP 6的發展,
甚至PHP 5.3的小改版都搶先在2009年支援了PHP 6的大部分功能(除了Unicode支援外),隔年春天,PHP 6計畫正式宣告失敗而終止,也讓PHP技術的發展,
蒙上了一層陰霾。
全球2.4億個網站後端開發語言是PHP
PHP 5持續改版推陳出新,但總是處於一種小改小修的優化,而鮮有從根本上革新的大進步。
儘管語言進展緩慢,但PHP的影響力卻是持續不墜,甚至越來越大,2013年初,根據Netcraft網站統計,全球超過2.4億個網站的後端開發語言用的就是PHP。

臉書JIT優化作法促發了PHP重構計畫
Rasmus Lerdorf今年5月來臺演講時透露,Facebook為了自家網站速度而重新改寫了PHP編譯引擎的JIT作法,引起了PHP開發者對於PHP語言效能的再思考。
2014年,開始有一群PHP開發者(包括了來自中國現任職於鏈家網的惠新宸)展開PHP語言的重構,也就是PHP NG專案(PHP New Generation),為了提高效能,他們不惜重新檢視甚至改寫PHP語言原始碼,一試結果發現,PHP程式的效能大幅提升了30%。
舊版PHP語言的發展目標是希望盡可能地提供更多功能,來滿足任何網站開發的需求,但新的PHP 7,則是希望兼顧效能和功能。Rasmus Lerdorf這樣說。
但要對一個已經發展了10年,歷經了全球開源開發人員精心雕琢之後的開發語言,還想要找出很大效能突破的關鍵,不是一件容易的事。
也因此,PHP 5重構專案PHP NG的巨大成效,也獲得PHP開發社群支持,成了PHP 7的基礎,開發社群轉而細細地推敲每一行PHP程式碼,想辦法從各種地方找出效能優化的關鍵。
PHP核心開發團隊花了很多心力來縮減PHP程式執行時所需搬動的記憶體位元數,像是將PHP儲存變數的資料架構zval從24位元縮減至16位元。或是重新檢視CPU層級的程式碼運作過程,來確保PHP 7程式碼更能符合新一代的處理器架構。
以zval優化來說,Rasmus Lerdorf曾解釋,因為zval是用來儲存變數的PHP內部的C語言基礎資料結構,不論是整數、長整數、雙精度浮點數、浮點數、陣列及物件都會儲存在zval數值。
原本在PHP 5中zval所用的容量大小是76 位元組,但到了PHP 7,則將zval容量縮減為52位元組,Rasmus Lerdorf表示,這意味著,建立PHP 7的基本資料結構縮減了24 位元組,PHP程式「每次要搬動的資料單位變小了,所以可以執行得更快,這是其中一個關鍵改變。」Rasmus Lerdorf表示。
不過,Rasmus Lerdorf也強調,每一次修改的優化可能只改善不到0.5%的效能,但經過了數百次如此這樣斟酌推敲的成果,累積起來就讓PHP 7的效能足足比舊版提高了一倍。
儘管從PHP 5升級到7也不是一件容易的事,但對全球2億個用PHP開發的網站而言,PHP 7無疑是一個解決既有網站效能瓶頸的新救星。
PHP新版12項新特色
除了效能提升之外, PHP 7其他新特色如大幅減少了記憶體使用,抽象化語法樹、一致性的64位元支援、例外處理架構優化、
將致命錯誤(fatal error)轉為例外處理、強化亂數產生器的安全性、移除舊式SAPI和例外處理,增加了null-coalescing操作符「??」、
宣告方式上則新增了Return和Scaler型別,另外也增加了Anonymous Classes、Zero cost asserts等新特色。
PHP原始程式碼除了可在GitHub上取得,官網也提供了一個下載網址
而Windows環境的PHP 7執行檔下載網頁則是windows.php.net/download
不過,有不少PHP 7功能沒有向下相容,例如在PHP 5中的致命錯誤(fatal errors),在PHP 7中改成異常(exceptions)處理機制,
因此一些舊有錯誤事件呼叫機制會失效。或像是foreach指令不再能更新陣列內部指標、list()函數不能反向分派數值、global不再支援可變變數等。
PHP官網也提供了一份向下相容性問題的詳細說明。

PHP 7升級必讀參考資料
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-5-16 05:52 , Processed in 0.239984 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表