成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP 之 FastCGI 與 mod_php 詳解

開發 后端
網上對于FastCGI與mod_php的知識比較雜亂而不全面,故在此整理一下,以便入門學習者查閱方便。

網上對于FastCGI與mod_php的知識比較雜亂而不全面,故在此整理一下,以便入門學習者查閱方便。

背景

PHP最常用的方式是以模塊的方式(mod_php)運行在Apache中,也是Apache運行PHP的默認方式;但在Nginx中,Nginx又使用的是PHP-FPM,但是PHP-FPM到底是個什么東東?跟php有什么關系?今天我們一起來探究一番。

PHP處理器(PHP handlers)

首先需要記住的是,任何一種Web服務器(Apache、Nginx等)都是被設計成向用戶發送html、圖片等靜態資源的,Web服務器自身并不能解釋任何動態腳本(PHP、Python等)。

PHP處理器就是用來解釋Web應用中的PHP代碼,并將它解釋為HTML或其他靜態資源,然后將解析的結果傳給Web服務器,最后再由Web服務器發送給用戶。

大多數的Web服務器都不能解析PHP代碼,因此它需要一個能解析PHP代碼的程序,這就是PHP處理器。

現在我們知道了,Apache與Nginx都需要PHP處理器來處理php代碼,那么怎么連接上服務器與php處理器呢?也就是說服務器與php處理器如何通信?

答案是通過SAPI(Server Application Programming Interface 服務器端應用編程端口),簡單來說,SAPI指的是PHP具體應用的編程接口, 就像PC一樣,無論安裝哪些操作系統,只要滿足了PC的接口規范都可以在PC上正常運行, PHP腳本要執行有很多種方式,通過Web服務器,或者直接在命令行下,也可以嵌入在其他程序中,有興趣大家可以研究PHP內核。

我們這里繼續討論PHP最常用的SAPI提供的2種連接方法:mod_php和mod_fastcgi。

mod_php模式

咱們回顧一下,Apache是怎么能夠識別php代碼的?是不是Apache的配置文件httpd.conf中加上或者修改這樣幾句:

  1. //添加

  2. LoadModule php5_module modules/libphp5.so

  3. AddType application/x-httpd-php .php

  4. //修改

  5. <IfModule dir_module>

  6. DirectoryIndex index.php index.html index.htm index.html

  7. </IfModule>

也即php作為Apache的一個子模塊來運行,當通過web訪問php文件時,Apache就會調用php5_module來解析php代碼。

配置加載mod_php模塊后,php便是Apahce進程本身一部分,每個新的Apache子進程都會加載此模塊。

mod_fastcgi模式

我們先看PHP-FPM官網的說明:

PHP-FPM - A simple and robust FastCGI Process Manager for PHP
PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites.

PHP-FPM是一個PHP的FastCGI進程管理器,解釋的非常簡單。這說明PHP-FPM是輔助mod_fastcgi模式進行工作的,然而FastCGI又是個什么東西?管理著什么進程?

什么是CGI?

CGI(Common Gateway Interface) 是WWW技術中最重要的技術之一,有著不可替代的重要地位。

CGI是外部應用程序(CGI程序)與Web服務器之間的接口標準,是在CGI程序和Web服務器之間傳遞信息的規程。

CGI規范允許Web服務器執行外部程序,并將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。

說白了,CGI是一種外部應用程序(CGI程序)與Web服務器的協議,CGI是為了保證Server傳遞過來的數據是標準格式。

什么是FastCGI?

FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活后,不會每次都要花費時間去fork一次(這是CGI最 為人詬病的fork-and-execute 模式)。它還支持分布式的運算, 即 FastCGI 程序可以在網站服務器以外的主機上執行并且接受來自其它網站服務器來的請求。

FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中并因此獲得較高的性能。眾所周知,CGI解 釋器的反復加載是CGI性能低下的主要原因,如果CGI解釋器保持在內存中并接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、 Fail- Over特性等等。

一般情況下,FastCGI的整個工作流程是這樣的:

  1. Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)。

  2. FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)并等待WebServer的連接。

  3. 當客戶端請求到達Web Server時,FastCGI進程管理器選擇并連接到一個CGI解釋器。 Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。

  4. FastCGI子進程完成處理后將標準輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成,FastCGI子進程接著等待并處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接,在CGI模式中,php-cgi在此便已經退出。

也就是說FastCGI是CGI的升級版,一種語言無關的協議,用來溝通程序(如PHP, Python, Java)和Web服務器(Apache2, Nginx), 理論上任何語言編寫的程序都可以通過FastCGI來提供Web服務。

FastCGI的特點是會在一個進程中依次完成多個請求,以達到提高效率的目的,大多數FastCGI實現都會維護一個進程池。

通俗解釋:FastCGI事先就需要啟動,而且可以啟動多個CGI模塊,在那里一直運行等著web發請求,然后再給php解析運算,完成后生成html返回給web后,但是完成后它不會退出,而是繼續等著下一個web請求。

PHP-FPM

PHP-FPM就是針對于PHP的FastCGI的一種實現,他負責管理一個進程池,來處理來自Web服務器的請求。

但是PHP-FPM僅僅是個“PHP FastCGI 進程管理器”, 它仍會調用PHP解釋器本身來處理請求,PHP解釋器(在Windows下)就是php-cgi.exe。

結束語

說了這么多,也不知道是否表達清楚,如果有不正確的地方請指正,謝謝。

原文:http://article.gitos.cn/2015/Aurthur/PHP-Mod-PHP-And-Fast-CGI-Explain.html 作者: Aurthur

責任編輯:王雪燕 來源: Aurthur的博客
相關推薦

2017-07-19 16:58:53

PHPFastCGI 內核探索

2017-12-28 10:22:28

NginxFastCGIPHP-fpm

2011-07-04 14:33:07

PHP

2011-07-04 14:57:56

PHP

2009-08-03 17:22:15

JSON解析

2016-10-27 15:58:35

魔術方法PHP

2009-06-30 09:50:10

IIS下配置PHPISAPIFastCGI

2011-07-05 17:52:41

PHP

2011-07-14 15:05:54

PHP

2011-07-12 17:06:43

PHP

2011-12-02 08:51:19

PHP

2013-05-20 10:20:02

2016-12-21 10:35:55

PHP內核PHP哈希表

2010-03-31 15:08:28

CentOS系統

2015-07-27 09:53:13

PHP編程過程

2011-03-21 14:30:45

LAMPApachePHP

2011-07-05 17:45:07

PHP框架

2011-07-07 13:48:35

Smarty

2011-03-21 11:16:51

LAMPPHP

2017-01-10 13:37:15

PHPTrait應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品一二三影院 | 欧美专区在线 | 日韩1区 | 久久久久久久久国产 | 国产探花在线观看视频 | 久久久青草婷婷精品综合日韩 | 亚洲区一| 美女拍拍拍网站 | 午夜婷婷激情 | 精品国产欧美一区二区三区成人 | 亚洲国产网址 | 久久免费精品 | 国产精品美女一区二区 | 欧美炮房 | 91久久久久久久久久久 | 伊人久久在线观看 | 亚洲精品国产一区 | 日韩成人免费视频 | 国产精品免费在线 | 日韩av成人 | 亚洲免费网 | 日本精品一区二区三区视频 | 91精品国产乱码久久久久久久久 | 黄色免费观看 | 欧美电影大全 | 日韩高清国产一区在线 | 91爱爱·com| 久久久精彩视频 | 久久精品久久久久久 | 电影在线 | 日本不卡一区二区三区在线观看 | 蜜桃免费一区二区三区 | 成人二区 | 亚洲人在线 | 激情欧美日韩一区二区 | 国产在线一级片 | 亚洲小视频 | 国内精品一区二区三区 | 亚洲欧美日韩电影 | 色婷婷一区二区三区四区 | 日日夜夜天天 |