當前位置:法律諮詢服務網 - 企業資訊 - 服務器程序源代碼分析II: php-fpm

服務器程序源代碼分析II: php-fpm

Php作為top2互聯網開發工具,非常受歡迎。可以參考:國內排名前25的網站采用技術選擇方案。

php這個名字實際上有兩層意思。

直接定義:

Php-fpm從php5.3.3開始進入Php源代碼包,之前是作為補丁存在的。

很少有人會去讀php本身的源代碼。六年前解決php內存泄露問題的時候做了壹些研究,最近又查了壹遍。我發現php的開發者很有誠意。這是壹個優秀的服務器軟件,有以下支持。

在linux服務器上,如果沒有設置events.mechanism,那麽默認情況下會采用epoll,所以

php-fpm的IO模型&並發處理能力與nginx完全壹致。

Nginx以其卓越的性能而聞名。大多數程序員認為php效率低下。看了源代碼,他們知道這是壹個傳說。

在高性能部署中,人們經常對nginx進行優化。之前自己部署php程序的時候犯了壹個錯誤。8G內存的服務器和php-fpm的max children都會設置為128+。現在看來太多了。請參考nginx的部署:

Php-fpm可以配置成3倍cpu核心數。

php-fpm的穩定性比nginx稍差。這是因為php-fpm有壹個內置的php解析器,php-fpm進程被綁定到php程序上。如果php腳本寫得不好,有壹個無限循環或者在遠程資源上被阻塞,它會拖累加載它的php-fpm進程。

nginx和後端應用服務器通過網絡的連接可以設置超時,不容易阻塞。

php-fpm的fastcgi是壹個短連接。我以為是長連接,看了代碼才知道是短連接。我在處理完壹個請求後關閉了它。

可惜php-fpm的接口采用fastcgi。php-fpm和fastcgi是完全綁定的,不能獨立使用。它只能部署在支持http-fcgi協議(nginx)的轉換器後面。其實可以考慮在php-fpm代碼包中引入http協議支持,讓php-fpm獨立運行,讓nodejs無話可說。

Php-fpm相當於OpenResty。OpenResty是中國人開發的nginx模塊,也就是在nginx中引入了lua解釋器。其實php-fpm和php-FPM唯壹的區別就是壹個使用php語法,壹個使用lua,所以OpenResty可以作為nginx的增強包,不需要選擇它作為主要的編程工具。

架構上,php-fpm已經做到最好了,超過了大多數python部署工具,我再也不會黑了。

  • 上一篇:漳州安農美貿易有限公司怎麽樣?
  • 下一篇:廣州新新銀通交流服務有限公司怎麽樣?
  • copyright 2024法律諮詢服務網