Facebook 為什麼採用 PHP 作為 webend 主要的開發語言?

一個網站採用哪種開發語言的背後可能總有些很另類的原因。
其實用什麼語言只有技術人員比較關心,但也是個值得一說的話題。


1. PHP 是專門面向 HTTP Server Side 的語言

2. PHP 寫的不錯,語法解析器什麼的很精簡高效

3. PHP 開銷低,不像Java 每次必須弄個虛擬機,非常適合HTTP.

4. 用的人多,開發人員好找


這應該是歷史原因,任何巨頭都是從小長大的。

FaceBook 的 PHP 屬於粘結劑語言,並且轉成 C++ 執行。

並且正如 Facebook 工程師所言 架構,類庫 遠比用什麼語言重要。


Flickr 的 Cal Henderson 這句話就能說明了: "Languages"s don"t Scale, Architecture Scale"

實際上選擇一門語言並沒有為什麼,再mark寫facebook的時候他最熟悉php,他能用php解決facebook所需要解決的一切問題,那麼就選擇它啊。

而且事實證明,php確實適合做webend開發。

當然更重要的是,在那個時代,geek們都是用php寫網站的。

至於編譯成c++什麼的,那是fb發展都後面性能要求越來越高才不得已發明出來的解決方案,跟選擇什麼語言沒有關係。


  1. 工程師好找
  2. 學習成本低

  3. 更靈活

FaceBook 的 PHP 其實主要用在前端表現層,應該不能簡單的說是主要開發語言。


我想FB最初並沒有多少選擇,選什麼語言取決於:1.創初人的技術背景2.可以快速高效搭建原型3.有後續技術跟進,例如:找PHP開發者相對容易。當然FB走到一定規模,就算是想換也不是那麼容易了,更多的是妥協與折中吧。


FB之前確實是使用的HipHop 將 PHP 代碼在伺服器上被執行前轉化成 C++ 代碼,在網站原來的基礎上提升了 500% 至 600% 的流量處理,但這遠遠不夠,後來他們不再將 PHP 代碼轉變成 C++ 代碼,而是將它直接轉變為原生計算機代碼(伺服器晶元讀取的語言),而且在 PHP 代碼被執行時直接轉化。通過追蹤網站實時執行代碼的方式,他們可以用更好的方式將 PHP 代碼轉變成原生計算機代碼,最終提升網站的處理速度


歷史原因!


歷史原因,他們後悔了。現在進去的都在用python呢


這是歷史遺留問題。Facebook是當年扎克伯格在大學時候用幾天寫出來的內部網站,肯定沒有考慮到幾十億人同時使用的問題。

在把PHP作為開發核心語言的問題上,Facebook吃盡了苦頭,PHP的架構問題已經不是Framework之類能夠解決的了。但是木已成舟,這麼龐大的系統,龐大的僱員,完全遷移到另外一種語言上已經不太可能。所以在Facebook做HipHop預編譯的努力之後,又開始做HipHop JIT解析器的努力。這篇文章對於技術詳情介紹得很仔細 HHVM 是如何提升 PHP 性能的?


因為開源,LAMP是現在最流行的黃金搭配,因為php用起來簡單,不過越容易用的腳步就越耗內存,比如php,js這些遠沒有原生的C/C++運行的快。facebook的php架構分了很多層,為了運行效率,他們也在php轉化為C這方面花了很多功夫。


我認為選擇網站語言看兩點

1 是否主流語言

2 是否是作者擅長的語言。

php是最主流的網路開發語言了。

扎兄既然選擇了php,也不排除有他個人擅長php的因素


因為扎總的個人原因吧。


PHP自由,這也是我喜歡PHP的原因。


FB放棄了php的一些特性(eval和一些魔法函數之類的),之後把php編譯成C++來執行,效率還是很可觀的


在一個團隊開始的時候,會那個語言的人多,最後這個網站就會用啥語言,大家不天天討論京東用微軟的架構么?一般公司到後中期,技術轉型成本很高


推薦閱讀:

初創互聯網公司該如何進行網站架構?
衡量網站性能時,並發數與吞吐量為何要分別考量?
點點網上線初期時的「架構重寫」事件有哪些值得借鑒的經驗教訓?
基於windows + .net開發網站, 高並發/高訪問量的系統架構是怎麼樣的呢?
如何學習大型網站的架構技術?

TAG:Facebook | PHP | 網站架構 |