PHP與PHPNG戰鬥HHVM和Zephir
關鍵要點
- PHPNG,PHP 的一個新分支,正在開發中,旨在大幅優化 PHP,並允許將來使用 JIT 編譯器進一步提升性能。它本身並非 JIT 編譯器,而是一個升級,為日後構建優秀的 JIT 編譯器奠定基礎。
- NG 升級專注於重寫 Zend 引擎的核心部分,以實現對 PHP 數據類型的更好內存分配。預計這將提高性能並允許更簡潔的 API。
- 雖然 PHPNG 承諾與現有擴展兼容,但並非所有擴展都受支持,一些測試也失敗了。這些兼容性問題在升級時可能會給共享主機提供商帶來挑戰。
- PHP 核心開發團隊對變化的緩慢適應可能意味著,到 PHPNG 實施時,它可能只提供性能升級,而無法與 Hack 和 HHVM 競爭,後者已經提供了更多附加功能。
本文由 NewRelic 贊助。感謝您支持使 SitePoint 成為可能的讚助商! 文章的先前版本錯誤地將 PHPNG 描述為 JIT 編譯器。情況並非如此,必要的修改已完成。請參閱文章底部了解更多信息。
舊世界中的混亂!幾年前,首先是 HipHop,沒有人關注。然後突然,HHVM 出現了,引入了 Hack,一切都亂套了——Facebook 創建了一個新的 PHP 並破壞/修復了一切(取決於你問誰)。此外,Zephir 出現並威脅要對所有PHP 代碼進行C 級編譯,並完全支持當前的PHP 擴展(雖然Zephir 不打算取代C 或PHP,但它確實允許你編寫類似PHP 的代碼並將其編譯為C,這使你可以輕鬆地將所有PHP 應用程序重寫為可以進行封閉源代碼編譯以提高速度和安全性的格式)。對於替代 PHP 運行時來說,這是蘑菇生長的時刻,HippyVM 也出現了。
在這一系列變化中,又出現了一個新的聲音:PHPNG。
正如 Manuel Lemos 介紹的那樣,PHPNG 是 PHP 的一個新分支,將在 PHP 的一個尚未確定的未來版本中出現。
等等,什麼?
這個名字有點俗氣(NG = 新一代),而且表達笨拙的 PHP 版本是核心團隊大幅優化 PHP 並允許將來使用 JIT 編譯器進一步提升性能的嘗試。 PHPNG 本身並非 JIT 編譯器,而是一個升級,為日後構建優秀的 JIT 編譯器奠定基礎。 PHPNG 分支本身不包含任何 JIT 功能。
PHPNG 由 Dmitry Stogov 在一個內部新聞組主題中提出。 Dmitry 負責 Zend 的性能和優化,主要處理 Zend 引擎。 NG 升級專注於重寫 Zend 引擎的核心部分,以實現對 PHP 數據類型的更好內存分配。
摘自 Reddit:
NG 的存在是因為 Zend 在引入 JIT 時進行的實驗在現實世界中失敗了,原因在於引擎當前的設計方式,主要是因為我們一直都在分配所有內容。 NG 補丁改變了規範,因此我們不再默認分配 zvals,這提高了性能並允許更簡潔的 API。
與任何“改進 PHP”的嘗試一樣,這次嘗試也有其優缺點。
優點
速度!
更快的執行意味著更快的資源分配,意味著更快的請求處理,意味著更大的請求吞吐量。初步結果令人鼓舞(1,2)。
性能仍需要與其他替代方案進行基準測試,但 10-30% 的提升不容小覷。
擴展!
由於此升級是在官方 Zend 引擎上進行的,而不是替代運行時,因此它幾乎保證了與當前擴展的兼容性。人們猶豫是否遷移到 HHVM 的最大原因之一是他們習慣使用的基本擴展不可用(在我的例子中是 Phalcon)。就我個人而言,一個支持 Phalcon 的更快的 PHP 引擎會讓我對 Hack 當今提供的升級不太關心。
所以它保證了擴展兼容性……等等。是嗎?哦,不。
缺點
擴展!
好得令人難以置信。
並非所有擴展都受支持,一些測試失敗了,我們還有更多改進的想法。
公平地說,NG 還很年輕。比我們在 PHP 世界中處理過的任何東西都要年輕得多,而且更像是一個重大的更新——因此,一些兼容性問題是不可避免的。但我同意 Manuel 的說法,當升級時間到來時,這可能是大多數共享主機提供商的痛點。
儘管我相當反對共享主機提供商,但我完全理解這可能帶來的問題。當我們試圖讓提供商“使用PHP5”時,以及最近一次他們需要使用更新版本的PHP 時,我們都遇到了類似的混亂,因此讓他們進行可能引入BC 中斷的重大轉變將是一項艱鉅的任務。
這種對變化的恐懼將鞏固舊版 PHP 的使用,反過來又會滋生更多在過時代碼上工作的極其不合格的 PHP 開發人員,完全忽略最佳實踐和漏洞。簡而言之,我們將重演歷史。這聽起來可能像是世界末日,正如一些人指出的那樣,但我每天都深入參與PHP 的所有領域,並通過一個完整的收件箱接觸到最低質量的領域,我看到了我們現在所處的位置以及我們將去向何處。然而,並非一切都是黑暗的——Heroku 和 DigitalOcean 等解決方案將使人們能夠以低於(或等於)共享主機提供商的價格運行最新和自定義版本的 PHP。
我最真誠的希望是核心團隊能夠將新的Zend 引擎完善到足以保持與所有擴展向後兼容的程度,但會向所有未能遵守NG 規範和最佳實踐的擴展開發人員發出編譯警告。
內部緩慢
核心開發團隊因適應變化緩慢而臭名昭著。其他語言中存在多年的現代功能在過去被否決了,直到幾年後才被實施。
這是否是由於核心開發團隊缺乏遠見,就像Anthony 和Phil 的帖子所說的那樣,或者是因為它規模太小且資金不足而無法快速進行任何重大更改,這無關緊要——內部緩慢意味著我們可能永遠無法在公開場合看到NG 並擺脫“alpha”狀態,就像神秘的PHP6 的情況一樣。
這讓我們想到了最後一點。
又一次落後了
由於在 PHP 核心開發團隊中經常看到的固有緩慢性,到 NG 實施時(如果真的實施的話),它將只提供性能升級。到那時,Hack 和 HHVM(遠遠超過標準 PHP)將提供如此多的附加功能,比賽將被操縱,PHP 將毫無勝算。
Hack 和 Zephir 中今天可用的類型提示將在這些實現中紮根。多線程、編譯、獨立 Web 服務器——所有這些功能今天都在替代解決方案中可用,而且它們幾乎都已準備好投入生產。雖然核心開發團隊正在研究其中的一些功能,而且PHP 可能在HHVM 之前就擁有IIS 支持(這顯然對某些人來說很重要),但我個人仍然認為這對於PHP 官方方面來說還不夠迅速的進展。
即使核心團隊確實決定對存在問題和需求的所有這些特殊功能投“贊成票”,他們也需要花費太長時間來實現——而且他們默認會落後,除非引入範式轉變並改變他們的整個工作方式。將源代碼移至 GitHub 是一個好舉動,但它只是觸及了表面。
也就是說,Rasmus 本人據說認為 HHVM 在幾年內成為 PHP 的核心引擎並非科幻場景。
結論
撇開 Facebook 相關的所有權(這本身就帶有許多負面含義),HHVM 通過展示如何進行此類升級來推動開發人員朝著正確的方向前進。這推動了創新,並迫使那些長期以來一直安於自己寶座的人站起來,伸展雙腿,看看他們是否還能奔跑。 Facebook 的積極進取迫使 PHP 世界重新審視並思考正在發生的事情,很快它就流行起來。
競爭是令人敬畏的。無論這將我們帶到哪裡,我都對此感到樂觀。
2014 年 5 月 28 日文章更新
在與 Phil Sturgeon 進行電子郵件交流之後,並在閱讀官方聲明之後,我已經編輯了上述文本的部分內容。簡而言之,我將 PHPNG 分類為 JIT,而它顯然不是,而只是一個性能升級,這將允許核心團隊稍後開發一個合適的 JIT 編譯器。
關於 PHP、HHVM、Zephir 和 PHPNG 的常見問題
PHP 和 Zephir 的主要區別是什麼?
PHP 和 Zephir 都是用於 Web 開發的腳本語言。 PHP 是一種廣泛使用的開源語言,而 Zephir 是一種高級語言,允許開發人員為 PHP 編寫擴展。 Zephir 提供靜態類型語法,這有助於防止 PHP 中可能發生的錯誤。但是,PHP 擁有更大的社區和更多可用的資源,這對開發人員來說可能是有益的。
HHVM 與 PHPNG 如何比較?
HHVM(HipHop 虛擬機)和 PHPNG(PHP 新一代)都是執行 PHP 代碼的引擎。 HHVM 由 Facebook 開發,並使用即時 (JIT) 編譯方法來實現卓越的性能。另一方面,PHPNG 是 PHP 的一個內部項目,旨在提高 PHP 應用程序的性能。它通過更改 PHP 內部表示值和對象的方式來實現這一點,從而導致顯著的內存使用改進。
Zephir 是否仍在維護?
根據最近的更新,Zephir 不再積極維護。這意味著雖然該語言仍然可用,但它可能不會接收任何可能出現的潛在問題的更新或修復。
使用 Zephir 的優勢是什麼?
Zephir 為開發人員提供了許多優勢。它提供靜態類型語法,這有助於防止錯誤。它還允許開發人員為 PHP 編寫擴展,從而提供一種提高 PHP 應用程序性能的方法。
為什麼創建 Zephir?
創建 Zephir 的目的是提供一種高級語言,允許開發人員為 PHP 編寫擴展。目標是通過允許開發人員使用更容易優化和管理的語言編寫關鍵代碼部分來提高 PHP 應用程序的性能。
PHPNG 如何提高 PHP 應用程序的性能?
PHPNG 通過更改 PHP 內部表示值和對象的方式來提高 PHP 應用程序的性能。這導致顯著的內存使用改進,並可能導致 PHP 應用程序的執行時間更快。
隨著 HHVM 和 Zephir 的出現,PHP 的未來是什麼?
儘管出現了 HHVM 和 Zephir,PHP 仍然是廣泛使用的 Web 開發語言。雖然 HHVM 和 Zephir 提供了性能改進,但 PHP 擁有龐大的社區和豐富的可用資源。 PHP 的未來看起來很有希望,並且正在不斷努力改進其性能和功能。
我可以使用 Zephir 來編寫 PHP 擴展嗎?
是的,Zephir 的主要優勢之一是它允許開發人員為 PHP 編寫擴展。這可能是提高 PHP 應用程序性能的一種方法。
腳本語言和高級語言有什麼區別?
腳本語言是一種編程語言,用於自動化本來需要由人工操作員一步一步執行的任務。另一方面,高級語言是一種編程語言,它與計算機的細節具有很強的抽象性,使其更易於閱讀和編寫。
HHVM 的即時 (JIT) 編譯方法如何提高性能?
HHVM 的即時 (JIT) 編譯方法通過在執行之前將字節碼編譯為機器碼來提高性能。這允許進行優化,可以顯著提高 PHP 應用程序的執行速度。
以上是PHP與PHPNG戰鬥HHVM和Zephir的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

箭頭函數在PHP7.4中引入,是短閉包的簡化形式。 1)它們使用=>運算符定義,省略function和use關鍵字。 2)箭頭函數自動捕獲當前作用域變量,無需use關鍵字。 3)它們常用於回調函數和短小計算,提高代碼簡潔性和可讀性。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。
