站長資訊網
        最全最豐富的資訊網站

        什么是php-fpm?如何進行優化來提升性能?

        什么是php-fpm?下面本篇帶大家了解一下php-fpm,介紹一下優化 php-fpm 時我們到底要優化什么,希望對大家有所幫助!

        什么是php-fpm?如何進行優化來提升性能?

        PHP是無處不在的,可以說是互聯網 Web 應用上使用最廣泛的語言。

        然而,它的高性能并不為人所知,尤其是在涉及到高并發系統時。這就是為什么對于這樣特殊的用例,正在被 Node (是的,我知道,它不是一種語言)、Go 和 Elixir 等語言接管。

        也就是說,您可以做很多事情來改進服務器上的 PHP 性能。本文主要關注 php-fpm 方面的內容,如果您使用Nginx,這是在服務器上的默認配置。

        如果你知道 php-fpm 是什么,請直接跳到優化部分。

        什么是 php-fpm?

        許多開發人員對 DevOps 方面的知識不太感興趣,即使是那些對此感興趣的開發人員,也極少有人知道它的底層原理。有趣的是,當瀏覽器發送一個請求到運行 PHP 的服務器上時,PHP 也不是最先進行處理請求的服務;而是,HTTP 服務器,Apache 和 Nginx 是其中最主要的兩個。「web 服務器」決定如何與 PHP 進行通信,然后傳遞請求的類型,數據和頭部信息到 PHP 進程。

        什么是php-fpm?如何進行優化來提升性能?

        上圖是 PHP 項目的請求-響應生命周期(圖片來源: ProinerTech)

        在現代 PHP 應用中,「find file」部分即為 index.php 文件,它是在服務器配置文件中配置的用于處理所有請求的代理。

        如今,Web 服務器究竟如何連接 PHP 正在進化,如果我們要深入研究所有細節,這篇文章的長度將激增。但粗略來說, 在 Apache 作為 Web 服務器首選的時間段,PHP 是作為包含在服務器內部的模塊。

        所以每當一個請求被接收,服務器將開啟一個新的進程, 它將自動包含 PHP 和執行請求。這個方法被稱作mod_php,“PHP作為一個模塊”的縮寫。這種方法有其局限性,而 Nginx 和 php-fpm 克服了它。

        php-fpm中,管理 PHP 的責任在于服務器內部的 PHP 程序。換言之, Web 服務器 (Nginx, 在本例中), 不在乎 PHP 在哪和怎樣運行的,只要它知道如何發送和接收數據即可。如果需要,在這種情況下,您可以將PHP視為另一臺服務器,它管理傳入請求的某些子PHP進程(因此,我們將請求送到服務器,該請求由服務器接收并傳遞到服務器 — —太瘋狂了!:-P)。

        如果你用過Nginx,你會看到這些代碼:

             location ~ .php$ {         try_files $uri =404;         fastcgi_split_path_info ^(.+.php)(/.+)$;         fastcgi_pass unix:/run/php/php7.2-fpm.sock;         fastcgi_index index.php;         include fastcgi_params;         fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;     }

        對于這一行:fastcgi_pass unix:/run/php/php7.2-fpm.sock;,它告訴Nginx通過 php7.2-fpm.socksocket與php進程通信。因此,對于每個傳入的請求,Nginx都通過這個文件寫入數據,在接收到輸出后,將其發送回瀏覽器。

        我必須再次強調,對于如何運行這不是最完整或者最準確的,但對于大多數 DevOps 任務是完全準確的。

        除此之外,讓我們回顧一下到目前為止所學到的東西:

        • PHP不會直接接收瀏覽器發送的請求。像 Nginx 這種 Web 服務器首先會攔截它。
        • Web 服務器知道如何連接到PHP進程,并將所有請求數據(粘貼所有內容)傳遞到 PHP 上。
        • PHP 完成其職責后,會將響應發送回 Web 服務器,然后將其發送回客戶端(在大多數情況下為瀏覽器)。

        流程圖如下:

        什么是php-fpm?如何進行優化來提升性能?

        PHP 和 Nginx 如何協同工作? (圖片來源:數據狗)

        到目前為止都不錯, 那么關鍵問題來了:PHP-FPM到底是什么呢?

        PHP 中的 FPM 代表 「快速進程管理器」, 花式解釋就是說,在服務器上運行的 PHP 并不是單個進程,而是由這個 FPM 進程管理器派生、控制和終止的一些PHP 進程。web服務器將請求傳遞給的就是這個進程管理器。

        PHP-FPM 本身就是一個完整的兔子洞,所以如果您愿意,可以隨意探索,但是對于我們的目的,這些解釋就足夠啦。 ?

        為什么要優化php-fpm?

        一般在正常運行的情況下,為什么要考慮優化呢? 為什么不將事物保持原樣。

        具有諷刺意味的是,一般我為大多數用例提供建議的話。 如果您的設置運行良好,并且沒有特殊用例,請使用默認設置。 但是,如果您希望擴展一臺機器之外的能力,那么從一臺機器中擠出最大的處理能力是必不可少的,因為它可以將您服務器的花費減少一半(甚至

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品无码无卡无需播放器| 欧美精品1区2区| 亚洲成网777777国产精品| 色一乱一伦一图一区二区精品| 久久亚洲精品国产精品| 久久精品成人免费国产片小草| 国产精品嫩草影院一二三区入口| 亚洲福利精品电影在线观看| 亚洲精品小视频| 99re6在线精品免费观看| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 亚洲精品成人a在线观看| 999国内精品永久免费视频| 无码人妻精品一区二区蜜桃百度| AAA级久久久精品无码区| 99久久精品国产麻豆| 久久国产精品成人影院| 日韩精品毛片| 黄床大片免费30分钟国产精品| 亚洲日韩精品欧美一区二区| 精品国产福利第一区二区三区| 久久国产精品无码一区二区三区| 亚洲精品无码久久久久| 亚洲国产婷婷综合在线精品| 欧美日韩成人精品久久久免费看 | 精品人伦一区二区三区潘金莲| 亚洲AV无码成人精品区狼人影院| 久草视频精品在线| 国内精品视频在线观看| 国产精品永久免费视频| 国产色精品vr一区区三区| 国产成人精品a视频一区| 国产69精品久久久久9999| Xx性欧美肥妇精品久久久久久| 亚洲愉拍自拍欧美精品| 99久久国产主播综合精品 | 国产精品毛片一区二区三区 | 一本久久a久久精品亚洲| 中文字幕av日韩精品一区二区| 最新国产精品无码| 亚洲精品无码MV在线观看|