Tumblr的PHP 7升級經驗分享

banq發表於2016-11-11
Tumblr一直在尋找新途徑來提高網站的效能。諸如對於頻繁訪問則新增快取、測試新的CDN配置或升級底層軟體。最近,經過團隊的努力,將全部Web伺服器從PHP 5升級到PHP 7。整個升級是一個有趣的過程,並且獲得了很酷的結果。

Tumblr是是目前全球最大的輕部落格網站,也是輕部落格網站的始祖。

這一切開始在2015秋天的HackDay專案。Tumblr已經有執行PHP 7伺服器。在那個時候,相當多的PHP擴充套件還沒有支援7版本,但也有非官方的實驗支援。無論如何,它還是能執行了!

今年春天,事情開始變得更加穩定,我們決定是時候開始更加緊密升級。安裝新版本的軟體包,安裝過程很簡單和一致順暢。由此將內部的PHP擴充套件到新的版本,一切都準備好了。

做像這樣的升級當然需要測試,以確保程式碼的行為是相同的,這點非常重要的時候,我們有幾個方法:

Phan,使用它來發現與PHP7不相容的程式碼,並方便修復。

我們也有一套單元測試和整合測試,有助於在確定什麼功能不正常。因為正常的開發過程一直持續著,所以需要確保新程式碼符合PHP7,所以我們在PHP 5和PHP 7中建立了CI的任務執行所有測試。

結果
新語言帶來兩個大的改進:效能和語言特點。

當我們把第一批伺服器升級PHP 7,我們總是密切注意各種圖形,必須確保一切順利執行。正如我們上面提到的,我們一直尋找效能改進,現在現實的結果是驚人的。幾乎立即看到延遲下降一半,伺服器的CPU負載降低至少50%。不僅我們的伺服器服務的網頁快一倍,他們還只使用一半CPU資源。

HP 7還帶來了很多有趣的新功能,可以讓開發者在Tumblr輕鬆一點的生活。一些亮點:
1.標量型別提示:PHP歷來都是相當差的型別安全,PHP 7引入標量型別的暗示保證值的傳遞符合特定的型別(字串、布林、int、float等)。
2.返回型別宣告:現在,PHP 7,函式可以有返回型別,明確的語言將強制執行。這減少了一些樣板程式碼和需要手動檢查函式返回值。
3.匿名類:就像匿名函式(關閉),匿名類是在執行時構造,可以模擬類,符合介面甚至延伸其他類。這些在日誌類別和單元測試中特別有用。
4.各種安全和效能全面增強。

[該貼被admin於2016-11-11 11:26修改過]

相關文章