php中cli和cgi執行模式有什麼區別

2023-01-31 06:02:33

區別:CLI指的是命令列的執行模式,即在控制檯或者是shell中鍵入命令執行PHP指令碼程式碼;而CGI是公共閘道器介面的執行模式,就是Apache在遇到PHP指令碼的時候會將PHP程式提交給CGI應用程式(php-cgi.exe)解釋,解釋之後的結果返回給Apache,然後再返回給相應的請求使用者。

本教學操作環境:windows7系統、PHP8版、DELL G3電腦

PHP能不能成功的在Apache伺服器上執行,就看我們如何去設定PHP的執行方式。PHP執行目前為止主要有三種方式:

mod_php、以模組載入的方式執行,初學者可能不容易理解,其實就是將PHP整合到Apache伺服器,以同一個程序執行。

CGI、以CGI的方式執行,CGI英文叫做公共閘道器介面,就是Apache在遇到PHP指令碼的時候會將PHP程式提交給CGI應用程式(php-cgi.exe)解釋,解釋之後的結果返回給Apache,然後再返回給相應的請求使用者。

FastCGI、以FastCGI的方式執行。這種形式是CGI的加強版本,CGI是單程序,多執行緒的執行方式,程式執行完成之後就會銷燬,所以每次都需要載入設定和環境變數fork-and-execute(建立-執行)。而FastCGI則不同,FastCGI 像是一個常駐 (long-live) 型的 CGI,它可以一直執行著,只要啟用後,不會每次都要花費時間去 fork 一次。FastCGI程序管理器自身初始化,啟動多個CGI直譯器程序 (在工作管理員中可見多個php-cgi.exe)並等待來自Web Server的連線。

1、php的CLI執行模式是什麼?

命令列

CLI:就是命令列,例如可以在控制檯或者是shell中鍵入命令:

php -f index.php
登入後複製

然後獲取輸出

命令列介面(英語:command-line interface,:CLI)是在得到普及之前使用最為廣泛的,它通常不支援,使用者通過鍵盤輸入指令,計算機接收到指令後,予以執行。也有人稱之為字元使用者介面()。 通常認為,命令列介面(CLI)沒有()那麼方便使用者操作。因為,命令列介面的軟體通常需要使用者記憶操作的命令,但是,由於其本身的特點,命令列介面要較圖形化使用者介面節約計算機系統的資源。在熟記命令的前提下,使用命令列介面往往要較使用圖形化使用者介面的操作速度要快。所以,圖形化使用者介面的作業系統中,都保留著可選的命令列介面。

2、php中的CGI執行模式是什麼?

公共閘道器介面

以CGI的方式執行,CGI英文叫做公共閘道器介面,就是Apache在遇到PHP指令碼的時候會將PHP程式提交給CGI應用程式(php-cgi.exe)解釋,解釋之後的結果返回給Apache,然後再返回給相應的請求使用者。

CGI 是Web 伺服器執行時外部程式的規範,按CGI 編寫的程式可以擴充套件伺服器功能。CGI 應用程式能與瀏覽器進行互動,還可通過資料庫API 與資料庫伺服器等外部資料來源進行通訊,從資料庫伺服器中獲取資料。格式化為HTML檔案後,傳送給瀏覽器,也可以將從瀏覽器獲得的資料放到資料庫中。幾乎所有伺服器都支援CGI,可用任何語言編寫CGI,包括流行的C、C ++、VB 和Delphi 等。CGI 分為標準CGI 和間接CGI兩種。標準CGI 使用命令列引數或環境變數表示伺服器的詳細請求,伺服器與瀏覽器通訊採用標準輸入輸出方式。間接CGI 又稱緩衝CGI,在CGI 程式和CGI 介面之間插入一個緩衝程式,緩衝程式與CGI 介面間用標準輸入輸出進行通訊。

公共閘道器介面」(Common Gateway Interface),HTTP伺服器 與你的或其它機器上的程式 進行 「交談」的一種工具 ,其程式 須執行在網路 伺服器 上。在伺服器 環境中,為「程式 」提供標準 的介面,通過這個介面,「程式 」可以對伺服器 與使用者端 交換的資訊 做一些事情 。「程式 」的語 言並沒有要求。程式 對介面進行 操作。伺服器 要支援 CGI就要提供CGI中要求的環境變數 ,或者還有別的。

個人理解:CGI規定了php與web server交流的規則,相當於執行了response = exec("php -f index.php -url=xxx -cookie=xxx -xxx=xxx")。

3、php的執行模式FastCGI是什麼?

以FastCGI的方式執行。這種形式是CGI的加強版本,CGI是單程序,多執行緒的執行方式,程式執行完成之後就會銷燬,所以每次都需要載入設定和環境變數fork-and-execute(建立-執行)。而FastCGI則不同,FastCGI 像是一個常駐 (long-live) 型的 CGI,它可以一直執行著,只要啟用後,不會每次都要花費時間去 fork 一次。FastCGI程序管理器自身初始化,啟動多個CGI直譯器程序 (在工作管理員中可見多個php-cgi.exe)並等待來自Web Server的連線。

4、php的執行模式mod_php是什麼?

模組載入

以模組載入的方式執行,初學者可能不容易理解,其實就是將PHP整合到Apache伺服器,以同一個程序執行。

5、php的cgi執行模式如何設定 ?

cgi的方式執行,需要做如下的設定php組態檔

cgi.force_redirect = 0 //本來是 1 並且去掉註釋符號;
登入後複製

修改apache的設定,去掉原來的模組設定

AddType application/x-httpd-php .php
LoadModule php5_module "C:/php5/php5apache2_2.dll"
PHPinidir "C:/php5/php.ini"
登入後複製

6、cgi是什麼?

最早的Web伺服器簡單地響應瀏覽器發來的HTTP請求,並將儲存在伺服器上的HTML檔案返回給瀏覽器,也就是靜態html。事物總是不 斷髮展,網站也越來越複雜,所以出現動態技術。但是伺服器並不能直接執行 php,asp這樣的檔案,自己不能做,外包給別人吧,但是要與第三做個約定,我給你什麼,然後你給我什麼,就是握把請求引數傳送給你,然後我接收你的處 理結果給使用者端。那這個約定就是 common gateway interface,簡稱cgi。這個協定可以用vb,c,php,python 來實現。cgi只是介面協定,根本不是什麼語言。下面圖可以看到流程

推薦學習:《》

以上就是php中cli和cgi執行模式有什麼區別的詳細內容,更多請關注TW511.COM其它相關文章!