CGI(Common Gateway Interface),通用網關介面,設定了web server的外部程式的規范,
簡單理解,就類似于php的介面,定義了輸入、環境變數、輸出的規范,
interface Cgi { function input(); function env(); function output(); }
| 標準輸入 | STDIN (get方式的請求,不放在標準輸入中,post可以,) |
| 環境變數 | 系統環境變數+當有http請求時(http服務器+客戶端+cgi傳輸程序的資訊),如php的$_SERVER資訊是從此處獲取的 |
| 標準輸出 | STDOUT ((mime型別 / location / 狀態碼)作為第一行 + 空行 + 輸出內容) |
cgi是運行在服務器上的,用于服務器與程式間的互動,
任何遵守cgi規范的程式都可以稱為cgi程式,
php經常使用的服務器是nginx或Apache,

不過cgi有個硬傷,每次一個請求過來,都需要重新fork一個新的cgi行程,請求結束再kill掉該行程,若是有大量的請求過來,將直接搞攤服務器,
fastcgi就是為了處理這種情況而誕生的 ,每次fork一個cgi行程,請求結束并不會kill掉該行程,而是放回cgi池子,等待下一個請求,
有這么多的cgi行程,為了進一步管理這些cgi行程,php-fpm誕生了,
php-fpm有一個master行程和N個worker行程,master行程是管理worker行程的,可以理解為管理者,worker行程就是干活的小弟,將請求轉給php-cgi去處理,
每次有一個新的請求過來,master行程將其放在一個佇列中,讓worker行程去搶奪這些請求,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5048.html
標籤:PHP
上一篇:LeetCode–第k個排列
