目錄
php中cgi是什麼意思
首頁 後端開發 PHP問題 php中cgi是什麼意思

php中cgi是什麼意思

Feb 14, 2022 am 10:58 AM
php

在PHP中,cgi是「Common Gateway Interface」的縮寫,是公共網關介面的意思,cgi可以讓一個客戶端從網頁瀏覽器向執行在網絡伺服器上的程序請求數據,是描述了伺服器和請求處理程序之間傳輸資料的一種標準。

php中cgi是什麼意思

本教學操作環境:windows10系統、PHP7.1版、DELL G3電腦

php中cgi是什麼意思

簡單來說CGI、 FastCGI只是一個協定而已, php-cgi 是實作cgi的程序, php-fpm是管理php-cgi的一個管理器而已。

CGI全名為「公共網關介面」(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程式進行「交談」的一種工具,其程式必須運行在網路伺服器上。

是一種重要的網路技術,可以讓一個客戶端,從網頁瀏覽器向執行在網頁伺服器上的程式請求資料。

CGI 描述了伺服器和請求處理程序之間傳輸資料的一種標準。

CGI是幹嘛的? CGI是為了確保web server傳遞過來的資料是標準格式的,方便CGI 程式的編寫者。

web server(比如說nginx)只是內容的分發者。例如,如果請求/index.html,那麼web server會去檔案系統找到這個文件,傳送給瀏覽器,這裡分發的是靜態資料。好了,如果現在請求的是/index.php,根據設定文件,nginx知道這個不是靜態文件,需要去找PHP解析器來處理,那麼他會把這個請求簡單處理後交給PHP解析器。 Nginx會傳哪些資料給PHP解析器呢? url要有吧,查詢字串也得有吧,POST資料也要有,HTTP header不能少吧,好的,CGI 就是規定要傳哪些資料、以什麼樣的格式傳遞給後方處理這個請求的協定。仔細想想,你在PHP程式碼中使用的用戶資料從哪裡來的。

當web server收到/index.php這個請求後,會啟動對應的CGI 程序,這裡就是PHP的解析器。接下來PHP解析器會解析php.ini文件,初始化執行環境,然後處理請求,再以規定CGI規定的格式傳回處理後的結果,退出進程。 web server再把結果回傳給瀏覽器。

好了,CGI是個協議,跟進程什麼的沒關係。那fastcgi又是什麼呢? Fastcgi是用來提高CGI程式效能的。

FastCGI是從CGI發展改進而來的。傳統CGI介面方式的主要缺點是效能很差,因為每次HTTP伺服器遇到動態程式時都需要重新啟動腳本解析器來執行解析,然後結果會傳回給HTTP伺服器。

提高效能,那麼CGI 程式的效能問題在哪呢? "PHP解析器會解析php.ini文件,初始化執行環境",就是這裡了。標準的 CGI 對每個請求都會執行這些步驟(不閒累啊!啟動進程很累的說!),所以處理每個時間的時間會比較長。這明顯不合理嘛!那麼Fastcgi是怎麼做的呢?首先,Fastcgi會先啟動一個master,解析設定文件,初始化執行環境,然後再啟動多個worker。當請求過來時,master會傳遞給一個worker,然後立即可以接受下一個請求。這樣就避免了重複的勞動,效率自然是高。而當worker不夠用時,master可以根據配置預先啟動幾個worker等著;當然空閒worker太多時,也會停掉一些,這樣就提高了性能,也節約了資源。這就是fastcgi的對流程的管理。

那PHP-FPM又是什麼呢?是實現了Fastcgi 的程序,被PHP官方收了。

大家都知道,PHP的解釋器是php-cgi。 php-cgi只是個CGI 程序,他自己本身只能解析請求,返回結果,不會進程管理(皇上,臣妾真的做不到啊!)所以就出現了一些能夠調度php-cgi進程的程序,比如說由lighthttpd分離出來的spawn-fcgi。好了PHP-FPM也是這麼個東東,在長時間的發展後,逐漸得到了大家的認可,也越來越流行。

PHP-CGI是解釋PHP腳本的程式而已。

PHP-FPM是一個FastCGI 管理器

CGI 模式運作原理

當Nginx 收到瀏覽器/index.php 這個請求後,首先會建立對應實作了CGI 協定的進程,這裡就是php-cgi(PHP 解析器)。接下來 php-cgi 會解析 php.ini 文件,初始化執行環境,然後處理請求,再以 CGI 規定的格式傳回處理後的結果,退出進程。最後,Nginx 再把結果回傳給瀏覽器。整個流程就是一個 Fork-And-Execute 模式。當使用者請求數量非常多時,會大量擠佔系統的資源如記憶體、CPU時間等,造成效能低。所以在用 CGI 方式的伺服器下,有多少個連線請求就會有多少個 CGI 子進程,子進程反覆載入是 CGI 效能低下的主要原因。

推薦學習:《PHP影片教學

以上是php中cgi是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

See all articles