天天看點

cgi、fastCGI、php-fpm、 php-CGI的差別

cgi、fastCGI、php-fpm、 php-CGI的差別

作為面試的高頻熱點問題,必須來一波記錄:

我們發送一個請求到收到響應之間的一個過程是什麼?

  如果用戶端請求的是 index.html,那麼伺服器r去檔案系統中找到這個檔案,發送給浏覽器,這裡分發的是靜态資料。

cgi、fastCGI、php-fpm、 php-CGI的差別

  如果我們請求的是index.php,那麼伺服器收到請求後分析出這是一個動态檔案,然後區啟動對應的CGI程式這裡就是PHP的解析器,解析器首先解析我們的php.ini檔案,初始化執行環境,然後解析index.php頁面,解析完畢後,以cgi規定的格式傳回給伺服器,然後退出程式,伺服器将結果傳回給用戶端。

cgi、fastCGI、php-fpm、 php-CGI的差別

 這就是一個完整的動态PHP Web通路流程。接下來了解概念:

  • CGI:是 伺服器 與 應用程式 之間資料交換的一種協定。
  • FastCGI:同 CGI,是一種通信協定,但比 CGI 在效率上做了一些優化。同樣,SCGI 協定與 FastCGI 類似。
  • PHP-CGI:是 PHP (Web Application)對 Web Server 提供的 CGI 協定的接口程式。
  • PHP-FPM:是 PHP(Web Application)對 Web Server 提供的 FastCGI 協定的接口程式,額外還提供了相對智能一些任務管理。