3、Webserver如何處理動態檔案

else發表於2021-09-09

1、webserver處理動態檔案的方式

  • 模組化即把處理動態檔案的引擎當成模組整合進webserver中

  • CGI通訊協議

2、實現方式

2.1、模組化

圖片描述

a、過程描述:

  • 客戶端發起動態檔案請求

  • webserver接收到請求,根據其配置檔案的內容,交由至對應的動態模組處理


b、要點:

    把動態處理模組當成是webserver的一個子模組。

2.2、CGI

    通用閘道器介面(Common Gateway Interface/CGI)是一種重要的網際網路技術,可以讓一個客戶端,從網頁瀏覽器向執行在網路伺服器上的程式請求資料。CGI描述了伺服器和請求處理程式之間傳輸資料的一種標準。

圖片描述

a、過程描述:

  • 客戶端發起動態檔案請求

  • webserver接收到請求,交由至對應的CGI處理

  • CGI建立子程式,由其處理該請求內容,並等待結果返回。

b、要點:

    CGI這種每次呼叫都需要建立子程式的方式。一來是建立子程式的開銷昂貴,二來是經不起大併發量。

2.3、fastCGI

    它是 CGI 的增強版本,採用master-worker的方式,改進了CGI中(fork-execute-exit)的詬病,用於減少 Server 與 CGI 應用之間的互動開銷,從而使 Server 可以同時處理更多的請求。

圖片描述

a、過程描述:

  • fastCgi啟動,根據其配置檔案,建立一個master和n個worker程式,開始監聽並等待請求

  • 客戶端發起動態檔案請求

  • webserver接收到請求,根據配置檔案,透過socker轉發至對應的fastcgi請求,並等待結果返回

b、要點:

  • 透過socket通訊方式,連線了 webserver和fastcgi。

  • 其次,fastcgi先建立工作程式的方式,避免了CGI(fork-execute-exit)的詬病。並根據採用master和worker的方式,master 程式只有一個,負責監聽埠,接收來自 Web Server 的請求,而 worker 程式則一般有多個(具體數量根據實際需要配置),每個程式內部都嵌入了一個 PHP 直譯器,是 PHP 程式碼真正執行的地方

3、協議實現

3.1、php-cgi

    php-cgi是php的直譯器,是cgi協議的實現

3.2、php-fpm

    php-fpm是管理和實現fastCGI的管理器


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2822822/,如需轉載,請註明出處,否則將追究法律責任。

相關文章