天天看點

大白話之apache與php溝通的三種方式cgi模式子產品化方式fastcgi 

其實對于這一塊的知識來說,很多初級工程師都會對這一塊的知識比較的迷茫,因為這些同學做的工作一般來說自己的職責或者說項目都涉及不到太多架構的東西,但是學一個東西我覺得是要做到知其然而又是以然,才能不斷拓展自己在這一領域的深度與廣度,今天來做一個系統的說明。

  php與apache的主要溝通方式就分為了如下的三種方式

  •       cgi模式
  •       子產品化方式
  •       fastcgi模式

cgi模式

cgi定義與說明:

我們先來通俗的解釋一下什麼是cgi,首先cgi是一種規範,漢化的解釋為通用的網關接口,其實就是web伺服器與php之間的一個翻譯機,當web伺服器接收到一個請求過來的時候,如果你是用的這種方式,因為浏覽器是隻能識别html或者其他靜态資訊的,是以cgi就會給你做出php代碼的轉換,那麼這個程式位于哪裡呢?

以phpstudy為例 ,位于php的bin目錄會看到這個可執行程式。

大白話之apache與php溝通的三種方式cgi模式子產品化方式fastcgi 

标題

大白話之apache與php溝通的三種方式cgi模式子產品化方式fastcgi 

那具體的在apache裡應該怎麼來配置呢?

# 對 PHP 5 用這行

  Action application/x-httpd-php “/php/php-cgi.exe”

子產品化方式

子產品化方式通俗解釋:

在子產品化(DLL)中,PHP是與Web伺服器一起啟動并運作的,再通俗點說兩者是同一個程序的方式在運作,那麼具體怎麼配置呢?

 # 對 PHP 5 用這兩行:

  LoadModule php5_module “c:/php/php5apache2.dll”

  AddType application/x-httpd-php .php

  # 配置 php.ini 的路徑

  PHPIniDir “C:/php”

fastcgi

通俗解釋:

說白點fastcgi也是一種協定,它是一個cgi的管理者,那麼它的具體實作到php中就是php的php-fpm子產品,但是在apache中是用的專門的fastcgi子產品,需要下載下傳.so檔案,php-fpm在php5.3以後不再作為第三方的子產品而是內建到了php中,它會提前的開啟多個cgi程式,管理這些程序,并提供方式合理有效的排程,保證了并發性,那麼具體怎麼配置呢?

http://www.tech1024.com/original/2986.html

哈哈,我在這裡貼出了一個連結,是因為其實在真正的工作中,你并不會真正的使用apache+fastcgi的形式,一般使用fastcgi最好的架構方式還是采用nginx+phpfpm的形式。

以上就是apache與php溝通的具體的三種方式,主流的大型公司基本都采用了nginx+phpfpm的做法,後續的文章會貼出具體的做法,包括nginx+phpfpm的詳細做法。

上一篇: WebDriver 随筆
下一篇: 圖檔api