大白話之apache與php溝通的三種方式
其實對於這一塊的知識來說,很多初級工程師都會對這一塊的知識比較的迷茫,因為這些同學做的工作一般來說自己的職責或者說專案都涉及不到太多架構的東西,但是學一個東西我覺得是要做到知其然而又所以然,才能不斷拓展自己在這一領域的深度與廣度,今天來做一個系統的說明。
php與apache的主要溝通方式就分為了如下的三種方式
- cgi模式
- 模組化方式
- fastcgi模式
cgi模式
cgi定義與說明:
我們先來通俗的解釋一下什麼是cgi,首先cgi是一種規範,漢化的解釋為通用的閘道器介面,其實就是web伺服器與php之間的一個翻譯機,當web伺服器接收到一個請求過來的時候,如果你是用的這種方式,因為瀏覽器是隻能識別html或者其他靜態資訊的,所以cgi就會給你做出php程式碼的轉換,那麼這個程式位於哪裡呢?
以phpstudy為例 ,位於php的bin目錄會看到這個可執行程式。
那具體的在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模組,在php5.3以後不再作為第三方的模組而是整合到了php中,它會提前的開啟多個cgi程式,管理這些程序,並提供方式合理有效的排程,保證了併發性,那麼具體怎麼配置呢?
哈哈,我在這裡貼出了一個連結,是因為其實在真正的工作中,你並不會真正的使用apache+fastcgi的形式,一般使用fastcgi最好的架構方式還是採用nginx+phpfpm的形式。
以上就是apache與php溝通的具體的三種方式,主流的大型公司基本都採用了nginx+phpfpm的做法,後續的文章會貼出具體的做法,包括nginx+phpfpm的詳細做法。