차이점: CLI는 명령줄 실행 모드를 나타냅니다. 즉, 콘솔이나 셸에 명령을 입력하여 PHP 스크립트 코드를 실행하는 반면 CGI는 공용 게이트웨이 인터페이스의 실행 모드입니다. 즉, Apache는 PHP 프로그램을 다음과 같이 실행합니다. 해석을 위해 CGI 애플리케이션(php-cgi.exe)에 제출하고 해석된 결과는 Apache로 반환된 후 해당 요청 사용자에게 반환됩니다.
이 튜토리얼의 운영 환경: windows7 시스템, PHP8 버전, DELL G3 컴퓨터
PHP가 Apache 서버에서 성공적으로 실행될 수 있는지 여부는 PHP의 실행 모드를 구성하는 방법에 따라 다릅니다. 지금까지 PHP를 실행하는 방법은 크게 3가지가 있습니다.
mod_php, 모듈 로딩에 의한 실행, 초보자가 이해하기 쉽지 않을 수 있지만, 실제로는 PHP를 Apache 서버에 통합하여 실행하는 것입니다. 같은 과정.
CGI, CGI 모드에서 실행 CGI는 영어로 공개 게이트웨이 인터페이스라고 합니다. Apache는 PHP 스크립트를 발견하면 설명을 위해 PHP 프로그램을 CGI 애플리케이션(php-cgi.exe)에 제출합니다. 설명, 결과는 Apache로 반환된 다음 해당 요청 사용자에게 다시 반환됩니다.
FastCGI는 FastCGI 모드에서 실행됩니다. 이 형식은 CGI의 향상된 버전입니다. CGI는 단일 프로세스, 다중 스레드 실행 방법이므로 프로그램은 실행 후 삭제되므로 구성 및 환경 변수는 포크 및 실행(생성)할 때마다 로드되어야 합니다. 실행하다). FastCGI는 다릅니다. FastCGI는 항상 실행될 수 있으므로 매번 포크하는 데 시간이 걸리지 않습니다. FastCGI 프로세스 관리자는 자체적으로 초기화되고 여러 CGI 인터프리터 프로세스(작업 관리자에 표시되는 여러 php-cgi.exe)를 시작한 다음 웹 서버의 연결을 기다립니다.
CLI: 예를 들어 콘솔이나 셸에서
php -f index.php
명령을 입력하면
명령줄 인터페이스(영어: 명령)가 출력됩니다. -라인 인터페이스, 약어: CLI)는 그래픽 사용자 인터페이스가 대중화되기 전에 가장 널리 사용된 사용자 인터페이스였습니다. 일반적으로 마우스를 지원하지 않습니다. 컴퓨터는 명령을 받은 후 명령을 실행합니다. 어떤 사람들은 이를 Character User Interface(CUI)라고도 합니다. 일반적으로 명령줄 인터페이스(CLI)는 그래픽 사용자 인터페이스(GUI)만큼 사용자 친화적이지 않다고 알려져 있습니다. 그러나 명령줄 인터페이스 소프트웨어는 일반적으로 사용자가 작동 명령을 기억해야 하기 때문에 자체 특성으로 인해 명령줄 인터페이스는 그래픽 사용자 인터페이스에 비해 컴퓨터 시스템 리소스를 절약합니다. 명령을 기억한다는 전제하에 명령줄 인터페이스를 사용하는 것이 그래픽 사용자 인터페이스를 사용하는 것보다 빠른 경우가 많습니다. 따라서 그래픽 사용자 인터페이스가 있는 운영 체제는 선택적 명령줄 인터페이스를 유지합니다.
는 CGI 모드에서 실행됩니다. CGI는 영어로 Public Gateway Interface라고 합니다. 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")。
以FastCGI的方式运行。这种形式是CGI的加强版本,CGI是单进程,多线程的运行方式,程序执行完成之后就会销毁,所以每次都需要加载配置和环境变量fork-and-execute(创建-执行)。而FastCGI则不同,FastCGI 像是一个常驻 (long-live) 型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一次。FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。
以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache服务器,以同一个进程运行。
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"
最早的Web服务器简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。事物总是不 断发展,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi。这个协议可以用vb,c,php,python 来实现。cgi只是接口协议,根本不是什么语言。下面图可以看到流程
推荐学习:《PHP视频教程》
위 내용은 PHP에서 cli와 cgi 실행 모드의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!