PHP 是個龐然大物。
儘管有人不斷宣稱 PHP 「即將消亡」。
但無法改變的事實是:網際網路依然大量依賴 PHP。本文將通過大量的資料和事實告訴你為何 PHP 仍然在統治著網際網路,你大爺仍然還是你大爺。
根據 W3 Techs 對全球前 1000 萬個網站使用的程式語言分析,我們可以看到:
絕大多數公共網站都是通過 PHP 和 CMS 來構建的。根據市場份額,12 大 CMS 軟體中有 8 個是用 PHP 編寫的。下面的資料來自 W3 Techs 對前 1000 萬個網站的 CMS 使用情況調查,每個百分點代表前 1000 萬個網站中的 10 萬網站。
不得不說,Wordpress 在內容管理領域依然站有絕對的統治地位。
根據 BuiltWith 2023 年 8 月對線上商店的報告,我們可以看到 PHP 在電商領域仍然佔統治地位:
Kinsta 發表了一篇文章,證明 PHP 仍然很快,仍然很活躍,仍然很流行:
早在 2011 年,人們就一直在宣稱 PHP 已死。但事實是,PHP 7.3 的請求處理速度是 PHP 5.6 的 2-3 倍,而 PHP 8.1 則更快。正因為 PHP 的普及,我們可以很輕鬆地招聘到有經驗的 PHP 開發者。
Vimeo 工程師 Matt Brown 在《這不是遺留程式碼,而是 PHP》一文中表示:
PHP 從未停止創新。儘管我們計劃將 500,000 行的 PHP 程式碼劃分為多個 [服務],但最終這些建議都沒有被採納。
Vimeo 自 2004 年以來規模擴大了數倍,我們的 PHP 程式碼庫也是如此。
Ars Technica 釋出了一個包含歷史資料的 W3 Techs 報告,證明 PHP 仍然遙遙領先:
儘管 PHP 有許多臭名昭著的怪癖,但它似乎還能活很久。從 2010 年的 72.5% 市場份額增長到今天的 78.9% 市場份額,目前還沒有任何明顯的競爭對手能讓 PHP 感到威脅。
在針對 Python 創始人 Guido van Rossum 的一個採訪播客中,Lex Fridman 如是說:
Lex: 目前網際網路的大部分後端服務仍然是用 PHP 寫的
Guido: 沒錯!
Daniel Stenberg 在其年度 Curl 使用者調查(第 18 頁)中統計了使用者使用 curl 的方式。直接使用 curl 命令列的使用者佔比最高(78.4%),使用者最熟悉的方式就是在 PHP 中使用 curl,自 2015 年調查開始以來一直都是這個結果。2023 年的調查報告顯示有 19.6% 的使用者在 PHP 中使用 curl。
curl (CLI) 78.4%, php-curl 19.6%, pycurl 13%, […], node-libcurl 4.1%.
Ember.js 雖然起源於 Ruby 社群,但作為一個前端框架,它可以與任何後端配合使用。Ember 的社群調查報告顯示,PHP 是受訪者第三喜歡的選項,僅次於 Ruby 和 Java。
Ember 的調查還詢問了一些通用的行業問題。例如,有 24% 的受訪者表示他們的基礎設施都是「自託管」,而不是依賴於主流的雲服務提供商。雖然這項調查本身不能完全代表整個行業,但結果仍可能會讓人大吃一驚,特別是對那些依賴社交媒體和會議演講來了解商業現狀的人來說更是如此。對於企業來說,現在準備好雲退出戰略(例如 NHS)比以往任何時候都更加重要。你可以閱讀 Basecamp 的文章瞭解雲退出戰略是如何為他們每年節省數百萬美元的。
上述統計資料衡量了不同網站和公司的數量,其中絕大多數是基於 PHP 構建的。但所有這些只告訴我們它們的規模在前 1000 萬名之內。那前 500 名呢?
Jack Ellis 在《Laravel 能否擴充套件?》這篇文章中指出,你不應該僅根據每秒可以處理的請求數量來做選擇。大部分業務都不太可能達到那個水平,而且還會面臨很多其他瓶頸。但事實證明,PHP 是可以擴充套件到這一水平的語言之一。
當看到我們的軟體(基於 Laravel 構建的 Fathom Analytics)增長迅猛時,我們從未懷疑過「這個框架是否能夠擴充套件?」。
我與多家企業合作過,他們利用 Laravel 支撐整個業務運營。像 Twitch、Disney、New York Times、WWE 和 Warner Bros 這樣的公司也在他們的多個專案中使用 Laravel。Laravel 能夠輕鬆應對大規模的應用需求。
Vimeo 工程師 Matt Brown 在《這不是遺留程式碼,而是 PHP》一文中強調:
可以很明確地告訴你們,PHP 還是你大爺。Vimeo 在 PHP 方面的持續成功就是證明,在 2020 年它仍然是快速發展的公司的絕佳工具。
Vimeo 還以開發流行的 PHP 靜態分析工具 Psalm 而聞名。
Slack 公司首席架構師 Keith Adams 在《認真對待 PHP》一文中提到:
Slack 伺服器端大部分應用邏輯都是由 PHP 來執行的。
相比於 PHP 的優勢而言(通過故障隔離減少 bug 成本;安全並行;高吞吐量),PHP 存在的問題可以忽略不計。
我們再分析一下 W3 Techs 的報告,分析部分業務比較單一的公司的規模。規模最大的是 WordPress,它驅動著 Automattic 的 WordPress.com。每月有 200 億次頁面存取(Alexa 全球排名 55)。
如果我們繼續往下看,來到佔市場份額 0.1% 的條目,可以看到大量的網站都是靠 PHP 系統來支撐的,PHP 仍然是 10w 小網站的首選框架。
MediaWiki 是維基百科背後的平臺,每月有 250 億的頁面瀏覽量(Alexa 排名 12)。同時 MediaWiki 還驅動著 Fandom(每月有 20 億的頁面瀏覽量,Similarweb 排名 44)和 WikiHow(每月有 1 億存取者,Alexa 排名 215)。
除此之外還有一大批網際網路公司由 PHP 驅動,例如 Facebook(Alexa 排名 7)、Etsy(Alexa 排名 66)、Vimeo(Alexa 排名 165)和 Slack(Similarweb 排名 362)。
Etsy 之所以引人關注,是因為它有高比例的活躍對談和動態內容。這與維基百科或 WordPress 不同,後者可以從靜態快取中提供大多數頁面檢視。這意味著儘管規模相似,但 Etsy 的 PHP 應用程式更容易受到高流量的影響。
Etsy 也是 PHP 創始人 Rasmus Lerdorf 的東家。他有時會在技術分享中展示 Etsy 的程式碼庫片段。(極客旁註:他在 2021 年的現代 PHP 講座中解釋了 Etsy 是如何使用 rsync 進行部署的,就像 Wikipedia 在過去 10 年使用 Scap 一樣)。Etsy 的官方部落格偶爾會提到他們對模組化 PHP 單體的工作進展,例如 Plural 在地化。有時也會放出詳細的 Etsy 站點效能報告:
很高興地告訴大家,升級到 PHP7 之後,本季度整個網站的效能都得到了提高,所有頁面的效能都有了顯著的提升。
大多數人認為,PHP 社群似乎在公共輿論中佔據的空間不大。無論是 PHP 核心開發者 , 還是 PHP 軟體包(例如 Laravel、Symfony、WordPress、Composer 和 PHPUnit)的作者,亦或是日常工作中使用 PHP 的普通工程師,我們很少在社交媒體上的爭論中看到他們的身影。
你也很少看到我們在會議上做演講,宣稱某個技術棧「絕對會」為你的公司帶來裨益。如果你聽了某些 JavaScript 框架粉絲的演講,你可能會認為大多數公司今天都在使用他們的技術棧。
我不是說 JavaScript 不好,而是某些人在沒有考慮技術或商業需求的前提下給出了「xxx 最好」的斷言。這是一種過度行銷,你怎麼知道它最好?你跟別的語言比較過了嗎?
我也不是說 JavaScript 沒有用武之地,我們要辯證地看待世間萬物。你可以分享你的經驗和成果,比如哪些行得通,哪些行不通。要持續探索、持續創新、持續分享,持續推動人類前進。這就是自由軟體的精神!
你可能看過《The Market for Lemons 》和《A Historical Reference of React Criticism》這兩篇文章,他們都指出了 JS 的問題。但是 ... React 僅佔有 3% 的市場份額。再加上其他的小框架(Vue、Angular、Svelte),這個數位才達到 5%。而基於 Node.js 的 Web 服務也僅佔有 3% 的市場份額。這是否意味著超過 90% 的人都錯過了 PHP?
別忘了,這 5% 代表了 50 萬個主要網站,這是一個巨大的數位。Node.js 有自己的優勢(實時訊息流)。但是,Node.js 也有其弱點(阻塞主執行緒)。另外要強調一點:市場份額並不能完全反映規模。你可能驅動著排名前 1% 的幾個大型組織,也可能驅動著排名後 1% 的組織。或者像 WordPress 那樣同時支撐排名前 1% 和其他 4000 萬個網站。
無論是老公司還是小公司,無論其規模大小,可能都沒有使用我們在公共場所經常聽到的技術棧。如果不考慮個人專案和燒錢的初創公司,其他公司的這個現象更為明顯。
對於正在成長和持續經營的企業來說,PHP 是否能夠成為企業首選的前三名語言?當一個企業和其團隊在擴大規模時,程式語言是否完全不重要?我們不得而知。
我只知道如今有許多企業都在使用 PHP,而 PHP 已被證明是一種可持續的選擇,它經受住了時間的考驗。例如,像 Fathom 這樣的新公司,在短短三年內就實現了盈利。正如 Fathom 的文章所說,大部分公司的業務永遠達不到那種規模。不過話又說回來,即使面對大規模的業務,PHP 仍然是一種經濟可持續的選擇。
那麼問題來了,PHP 是唯一的選擇嗎?當然不是。
有的語言速度更快(Rust),有的語言社群規模更大(Node.js),或者編譯器更成熟(Java),但這往往會犧牲其他價值。
PHP 達到了某種柔中取剛的平衡點。它速度很快,社群規模較大,語法現代化,開發活躍,易於學習,易於擴充套件,並且擁有一個龐大的標準庫。它可以在大規模場景下提供高效和安全的並行,而又沒有非同步複雜性或阻塞主執行緒的問題。由於平臺穩定,加上社群重視相容性和低依賴性,它的維護成本往往較低。
當然,每個人的需求不盡相同,但想要達到上述的這種平衡點,PHP 是少數幾個能滿足需求的軟語言之一。除此之外還有哪個語言可以做到?