PHP7對陣HHVM會有怎樣的新能變化
2019-09-15
在2008年,F(xiàn)acebook 啟動了一項工作,計劃開發(fā)一個工具 將 PHP 腳本轉(zhuǎn)換成 C++,這樣就可以被編譯后在 web 服務器上運行。目的是節(jié)省服務器資源,這是一個很重要的目標,因為 Facebook 的用戶量正在快速增長。從這個意義上講,這個項目是成功的,因為它可以讓服務器處理之前五到六倍的請求量。
時間回到2010年,F(xiàn)acebook 的服務器需求已經(jīng)增加了很多,是時候考慮用新的創(chuàng)新來提升更大的效率?;谶@個需求,F(xiàn)acebook 開發(fā)了 HHVM。
HHVM 使用了 Just-In-Time (JIT) 編譯方式將 PHP 代碼轉(zhuǎn)換成某種字節(jié)碼。接下來把字節(jié)碼再轉(zhuǎn)換成機器碼并進行優(yōu)化,讓它盡可能快的運行。
PHP 7 是 PHP 社區(qū)對 HHVM 的回應。PHP 7 發(fā)布的預覽版本號稱比之前的 PHP 5 的性能要提升100%。
你可能會問 PHP 的版本直接從 PHP5 跳到了 PHP7,答案是這樣的:PHP6 的開發(fā)開始于2005年,但是它的進展過于緩慢又出現(xiàn)了很多的問題,這樣 PHP6 在它還沒有發(fā)布正式版本之前就有了不好的名聲。所以PHP社區(qū)決定給這個語言的新版本直接命名為 PHP7。
真正的問題不是 PHP5 和 PHP7 之間的比較,因為已經(jīng)很明顯了 PHP7 提供了更快速的運行速度。但是我們想比較的是 PHP7 和 HHVM。很多專家已經(jīng)分別使用了這兩個方法來處理PHP代碼,并且揭示了一些有趣的結(jié)論。
在回答哪個更好之前,讓我們先來看一下他們之間的關鍵不同點和相似之處。
代碼解析:
PHP7 和 HHVM 之間的基本不同之處在于他們解析 PHP 代碼的方式。PHP7 使用標準的 PHP 解析器,它是一個可以給所有人使用的免費軟件,可以在服務器上直接解析和運行。它生成 HTML 代碼,然后發(fā)送給客戶端,客戶端顯示出用戶期望的內(nèi)容。
相比之下,HHVM 首先把 PHP 代碼轉(zhuǎn)化為 HipHop 字節(jié)代碼,這個代碼再被翻譯成機器碼然后執(zhí)行。在這個過程中 HHVM 會對代碼進行優(yōu)化,優(yōu)化一些影響執(zhí)行效率的 PHP 代碼,目標是提高運行速度。
編寫代碼
PHP 解析器和 HHVM 都可以接收 PHP 代碼然后運行。這樣寫代碼的過程是完全一樣的。但是如果你想使用 HHVM,你需要在你的服務器上安裝 HHVM 然后以命令行的方式通過 HHVM 命令來調(diào)用。
性能測試:
HHVM 比之前的 PHP 版本能提供更快速的性能。但是最近的性能測試認為至少在某些情況下 PHP7 是比 HHVM 稍微快些。讓我們來看一下由 Kinsta 來做的性能測試結(jié)果:
WordPress:運行在WordPress4.1.1的 PHP7 每秒鐘比 PHP5.6 能執(zhí)行超過兩倍的請求,但是沒有 HHVM3.6.1 提供的多,在測試中 HHVM 每秒鐘執(zhí)行624個請求而 PHP7 只執(zhí)行604個。
Drupal:PHP7 可以給 Drupal 用戶提供比 HHVM 更加明顯的優(yōu)勢。PHP7 在 Drupal8 上的處理響應效率比 HHVM 高出超過37個百分點。
除了開發(fā)出 HHVM 的 FaceBook 公司外,還有很多其他公司也采用了這個方案,在服務器上用 HHVM 運行 PHP 應用,包括 Wikimedia 和電子商務網(wǎng)站 Etsy。
Wikimedia:Wikimedia 擁有大量的教育內(nèi)容,包括著名的在線百科全書維基百科。維基百科每 個月吸引著近五億的互聯(lián)網(wǎng)用戶,為了滿足這樣高級的需求,需要優(yōu)化服務器的性能,和 PHP相比 HHVM 有一個顯著的優(yōu)點,它可以同時加載多個 SPU 核心, 而 PHP 是單線程語言,不能被并行化。維基百科部署了 HHVM 后,CPU 的負載從50%降到了10%,用戶提交編輯時的平均響應時間減少到原來的一半,頁面的平均加載時間從原來的1.3秒降到了0.9秒。
Etsy: 擁有五千四百萬用戶的 Tesy 同樣迫切需要提高服務器性能,Etsy 的工程師對比了HHVM 和 PHP5.4 的性能,發(fā)現(xiàn) HHVM 每秒可以處理280個服務器請求,而對于 PHP5.4,如果每秒的請求數(shù)超過了190次,服務器的響應時間就會急劇增加。
PHP7 穩(wěn)定版將發(fā)布于2015年11月。因此,公司尚未使用新的語言,但 PHP7 測試版的性能有希望的基準測試結(jié)果可以吸引更多的公司使用新版本。
未來是 PHP7 的時代,那 HHVM 呢?很遺憾,它是離死不遠了。雖然現(xiàn)在許多企業(yè)已經(jīng)在使用 HHVM增加在其網(wǎng)站上的表現(xiàn)。但是 PHP 和 HHVM 之間的過渡不是瞬間就能完成的。Etsy(一個網(wǎng)絡商店平臺)花了的半年多時間來完成過渡。在和 PHP7 相比,HHVM 暫時只有很輕微的速度好處,企業(yè)會急著切換回 PHP。
Facebook 正在繼續(xù)開發(fā) HHVM。它最近宣布了對 Mac OS X 的支持,使該技術讓蘋果開發(fā)者便于使用。HHVM 開發(fā)商相信他們的 HHVM 仍比 PHP7 快,在很多情況下,包括與 WordPress。
作為一個網(wǎng)店老板,你需要根據(jù)你的網(wǎng)店所在的平臺決定是否使用 PHP7 或 HHVM。如果你的網(wǎng)站是用 WorldPress 創(chuàng)建的,那么你可以看看最新版本的 HHVM 和 PHP 7 的基準測試結(jié)果,從測試結(jié)果可以發(fā)現(xiàn)兩者在性能上的差異,然后你就可以選擇解決方案,最大限度地減小頁面加載時間,服務器響應時間和 CPU 使用率。
選擇 HHVM 的原因
HHVM 使用動態(tài)翻譯技術,在大多數(shù)情況下(包括WordPress)可以提供更高的性能。
HHVM 在處理大量請求時,可以保證每個請求只使用少量的內(nèi)存。
HHVM 開發(fā)者正在穩(wěn)步增加這個引擎所能運行的 PHP 代碼的數(shù)量,它已經(jīng)可以運行最新版本的 WorldPress,以及其他常見的 PHP 框架和應用。
HHVM 是開源的,盡管 HHVM 是 Facebook 開發(fā)的,但它是開源的,意味著任何人都可以使用和修改它的源碼。
PHP 7 在某些情況下比 HHVM 更快,包括運行 Drupal 8。
使用 PHP 7 不需要安裝設置 HHVM。
盡管很多 PHP 4 的功能在新版本中不再支持,但用 PHP 5 寫的代碼在轉(zhuǎn)換到 PHP 7 后將會如預期一樣工作。
PHP 7 由 PHP 社區(qū)開發(fā),這是一群開發(fā)穩(wěn)定可靠 PHP 版本久負盛名的人。
不要猶豫太久,Kinsta 建議那些在線的網(wǎng)站盡量在 PHP 7 與 HHVM 之間作出選擇,早點開始實施解決方案,讓你的網(wǎng)站性能得到優(yōu)化。一個低效的網(wǎng)站也會讓你的聲譽受損,那將很難挽回。
相對于舊版本的 PHP,HHVM and PHP 7 都更有益。作出決定,盡快將你的網(wǎng)站切換到新的系統(tǒng)。