FastCGI執行原理及php fpm引數配置

2021-09-24 14:41:52 字數 1622 閱讀 4557

1、什麼是cgi

cgi全稱是「公共閘道器介面」(common gateway inte***ce),http伺服器與你的或其他機器上的程式進行「交談」的一種工具,cgi程式須執行在網路伺服器上。

傳統cgi介面方式的主要缺點是效能很差,因為每次http伺服器遇到動態程式時都需要重新啟動指令碼解析器來執行解析,然後結果被返回給http伺服器,這在處理高併發訪問時,幾乎是不可用的,因此就誕生了fastcgi。另外傳統的cgi介面方式安全性也很差,現在已經很少被使用了。

2、什麼是fastcgi

fastcgi是乙個可伸縮地、高速地在http server和動態指令碼語言間通訊的介面(fastcgi介面在linux下是socket,這個socket可以是檔案socket,也可以是ip socket),主要優點是把動態語言和http server分離開來。多數流行的http server都支援fastcgi包括nginx和lighttpd等,同時fastcgi也被許多指令碼語言所支援,其中就有php。fastcgi介面方式採用c/s結構,可以將http伺服器和指令碼解析伺服器分開,同時在指令碼解析伺服器上啟動乙個或者多個指令碼解析守護程序。當http伺服器每次遇到動態程式時,可以將其直接交付給fastcgi程序來執行,然後將得到的結果返回給瀏覽器。這種方式可以讓http伺服器專一地處理靜態請求或者將動態指令碼伺服器的結果返回給客戶端,這在很大程度上提高了整個應用系統的效能。

3、nginx下fastcgi執行原理

4、優化php-fpm程序管理配置引數。

php-fpm的編譯引數:

php5.3及以上版本編譯引數為」--enable-fpm」

php5.2及以下版本編譯引數為」--enable-fastcgi  --enable-fpm  --enable-force-cgi」

#php-fpm.conf配置檔案引數優化選項。

pm.max_children = 1024      #子程序最大數

pm.start_servers = 16        #啟動時的程序數 

#保證空閒程序數最小值,如果空閒程序小於此值,則建立新的子程序

pm.min_spare_servers = 5     

#保證空閒程序數最大值,如果空閒程序大於此值,則進行清理

pm.max_spare_servers = 20

#程序的超時時間

pm.process_idle_timeout = 15s 

#設定每個子程序處理的最大請求數

pm.max_requests = 1000

#設定檔案開啟描述符的rlimit限制

rlimit_files = 1024

#當乙個請求該設定的超時時間後,就會將對應的php呼叫堆疊資訊完整寫入到慢日誌中. 設定為 '0' 表示 'off'

request_slowlog_timeout = 10s

#慢請求的記錄日誌,配合request_slowlog_timeout使用

slowlog = log/$pool.log.slow

linux 檢視php當前fastcgi程序個數

netstat -napo |grep "php-fpm" | wc -l

php執行原理 fastcgi與php fpm

一 我們知道像apache這些web伺服器是不能直接解析php程式,那麼我們在網頁在輸入的php程式是如何解析的啦?是通過sapi server abstraction api 它提供了乙個介面,使得php可以和其他應用進行互動資料。php 提供多種sapi 1.給apache nginx 這種we...

FastCGI介紹及LNMP工作原理

本文參考自fastcgi介紹及lnmp工作原理 1 什麼是cgi cgi全稱是 通用閘道器介面 common gateway inte ce http伺服器與你的或其它機器上的程式進行 交談 的一種工具,其程式一般執行在網路伺服器上。cgi可以用任何一種語言編寫,只要這種語言具有標準輸入 輸出和環境...

CGI 和 FastCGI 協議的執行原理

在用php開發的過程中,我們常常使用nginx或者apache作為我們的web伺服器。但是php是如何與這些web伺服器通訊的呢?要談fastcgi就必須先說說cgi。那什麼是cgi?cgi協議同 http 協議一樣是乙個 應用層 協議,它的 功能 是為了解決 web 伺服器與 php 應用 或其他...