首頁 >後端開發 >PHP問題 >php中cli和cgi運行模式有什麼差別

php中cli和cgi運行模式有什麼差別

青灯夜游
青灯夜游原創
2023-01-30 16:25:394310瀏覽

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

php中cli和cgi運行模式有什麼差別

本教學操作環境: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)是在圖形使用者介面在普及之前使用最廣泛的使用者介面,它通常不支援滑鼠,使用者透過鍵盤輸入指令,電腦接收到指令後,予以執行。也有人稱之為字元使用者介面CUI)。    通常認為,命令列介面(CLI)沒有圖形使用者介面GUI)那麼方便使用者操作。因為,命令列介面的軟體通常需要使用者記憶操作的命令,但是,由於其本身的特點,命令列介面要較圖形使用者介面節約電腦系統的資源。在熟記命令的前提下,使用命令列介面往往要較使用圖形使用者介面的操作速度要快。所以,圖形使用者介面的作業系統中,都保留著可選的命令列介面。

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视频教程

以上是php中cli和cgi運行模式有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn