亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一個模糊的概念

無論是php,Python編程語言,還是Apache,Nginx服務器對于cgi協(xié)議是個繞不開的話題。安裝,部署都會經(jīng)常的看到,那么它們到底是干什么的,網(wǎng)上的答案非常的多!今天通過它們進行一波匯總,徹底告別這個難關(guān)。參考: https://www.dayuzy.com/?p=476

HTTP到cgi協(xié)議

當瀏覽器的客戶端輸入網(wǎng)站走http協(xié)議到了web服務器,比如apache,這個大家都很清楚。web服務器沒有處理php文件的功能,就會請求php解釋器( php-cgi.exe )。或者,不是PHP文件,比如是python文件,web服務器也會去請求python的解釋器。既然這么多解釋器,不能沒有一個協(xié)議規(guī)定它們的標準,否則亂套了,這時候 cgi協(xié)議就出來了 ,說白了就是 apache/nginx 和后端的腳本語言(php,python等)交互之間制定的協(xié)議。

php-cgi是什么

在windows系統(tǒng)上面,安裝了php后,在安裝目錄下面有下面三個文件:

php.exe
php-cgi.exe
php-win.exe

以上的三個文件互不影響,我本地測試刪除兩個另外一個也能用。

在命令行運行一個php文件

cgi、fastcgi、PHP-fpm都是什么

 

F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts>
F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts> php F:softwaresphpStudyPHPTutorialindex.php
Hello World #php.exe運行結(jié)果
F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts>php-cgi F:softwaresphpStudyPHPTutorialindex.php
X-Powered-By: PHP/7.2.1 #php-cgi.exe運行結(jié)果
Content-type: text/html; charset=UTF-8 #php-cgi.exe運行結(jié)果
Hello World #php-cgi.exe運行結(jié)果
F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts>php-win 
F:softwaresphpStudyPHPTutorialindex.php #php-win.exe運行,結(jié)果是空行
F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts>

apache如何支持php

apache調(diào)用php有三種方式,模塊、cgi、FastCgi,這些方法網(wǎng)上都能找到,下面說明一下原理。

  1. 模塊:這是apache獨有的對php支持,nginx是沒有這種方式的,通過這種方式apache就可以直接處理php腳本了,至于是多進程、多線程要取決于apache的工作方式。參加: Apache三種工作模式介紹與配置
  2. cgi(通用網(wǎng)關(guān)接口):當apache有php腳本需要處理時,通過走cgi協(xié)議調(diào)用php解釋器 php-cgi.exe ,并且 php-cgi.exe 會讀取 php.ini 配置文件,作為apache的子進程。這里有個缺點:客戶端瀏覽器的請求多了,apache創(chuàng)建的子進程會特別多,并且每次都重新讀取 php.ini 配置文件。
  3. FastCgi就是為了解決cgi的問題,制定的協(xié)議。該協(xié)議規(guī)定, php-cgi.exe 我不再做你apache的子進程了,我獨立了,這樣你輕松了吧!我單獨構(gòu)成一個服務,這個服務規(guī)定一個master主進程,再啟用幾個worker進程。master負責對 php.ini 等配置文件,以及接收apache發(fā)過來的請求,分配給worker進程進行處理。這樣就構(gòu)成了 apache 作為客戶端, FastCgi協(xié)議程序 作為服務端。這個 FastCgi協(xié)議程序 就是PHP-fpm,它就是 FastCgi協(xié)議 的具體實現(xiàn)。

cgi和FastCgi是什么

它們都是協(xié)議,F(xiàn)astCgi解決了cgi的一些缺點。

php-cgi.exe和PHP-fpm是什么?

php-cgi.exe 是解釋器,也可以當作一個簡易的 cgi/FastCgi 管理器。比如在windows系統(tǒng)中nginx是如何與php結(jié)合的呢?linux通過php-fpm,但是windows沒有php-fpm,這個時候打開任務管理器會發(fā)現(xiàn) CGI/FastCGI(32位) 這個進程,nginx就是反向代理給它的。

location ~ .php(.*)$ {
 fastcgi_pass 127.0.0.1:9000; #這里的9000端口就是``php-cgi.exe``監(jiān)聽的
 fastcgi_index index.php;
 fastcgi_split_path_info ^((?U).+.php)(/?.+)$;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
 include fastcgi_params;
 }

我們在命令行查看一下 php-cgi.exe 的幫助,它也是可以進行一些簡單的配置的

F:softwaresphpStudyPHPTutorialphpphp-7.2.1-nts>php-cgi -h
Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
 php <file> [args...]
 -a Run interactively
 -b <address:port>|<port> Bind Path for external FASTCGI Server mode
 -C Do not chdir to the script's directory
 -c <path>|<file> Look for php.ini file in this directory
 -n No php.ini file will be used
 -d foo[=bar] Define INI entry foo with value 'bar'
 -e Generate extended information for debugger/profiler
 -f <file> Parse <file>. Implies `-q'
 -h This help
 -i PHP information
 -l Syntax check only (lint)
 -m Show compiled in modules
 -q Quiet-mode. Suppress HTTP Header output.
 -s Display colour syntax highlighted source.
 -v Version number
 -w Display source with stripped comments and whitespace.
 -z <file> Load Zend extension <file>.
 -T <count> Measure execution time of script repeated <count> times.

php-fpm又是什么?

PHP-fpm 這個就是 FastCgi進程管理器 ,它的概念并不模糊!它啟動服務監(jiān)聽端口,通過nginx反向代理給它,并且它自己內(nèi)置php解釋器。但是,但是windows上面不能使用 PHP-fpm 。

對于客戶端瀏覽器而言, nginx/apache 是服務端。對于 PHP-fpm 而言, apache/nginx 是客戶端。

總結(jié)

cgi、fastcgi是協(xié)議,是標準,是web服務器到后臺腳本語言之間的協(xié)議。

php-cgi和PHP-fpm是程序,至于php-cgi是解釋器還是管理器,網(wǎng)上怎么說的也有,并且它也能監(jiān)聽端口處理web服務器代理的請求,那它就是簡單的 cgi/FastCgi進程管理器 管理器吧!

參考

搞不清FastCgi與PHP-fpm之間是個什么樣的關(guān)系

PHP 連接方式介紹以及如何攻擊 PHP-FPM

php-cgi和php-fpm有什么關(guān)系?

Apache三種工作模式介紹與配置

php手冊:在舊的Windows系統(tǒng)上安裝

php-cgi和php-fpm有什么關(guān)系?

分享到:
標簽:cgi
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定