内容简介:无论是php,python编程语言,还是apache,nginx服务器对于cgi协议是个绕不开的话题。安装,部署都会经常的看到,那么它们到底是干什么的,网上的答案非常的多!今天通过它们进行一波汇总,彻底告别这个难关。参考:当浏览器的客户端输入网站走http协议到了web服务器,比如apache,这个大家都很清楚。web服务器没有处理php文件的功能,就会请求php解释器(在windows系统上面,安装了php后,在安装目录下面有下面三个文件:
一个模糊的概念
无论是php,python编程语言,还是apache,nginx服务器对于cgi协议是个绕不开的话题。安装,部署都会经常的看到,那么它们到底是干什么的,网上的答案非常的多!今天通过它们进行一波汇总,彻底告别这个难关。参考: https://www.dayuzy.com/?p=476
HTTP到cgi协议
当浏览器的客户端输入网站走http协议到了web服务器,比如apache,这个大家都很清楚。web服务器没有处理 php 文件的功能,就会请求php解释器( php-cgi.exe )。或者,不是PHP文件,比如是 python 文件,web服务器也会去请求python的解释器。既然这么多解释器,不能没有一个协议规定它们的标准,否则乱套了,这时候 cgi协议就出来了 ,说白了就是 apache/nginx 和后端的脚本语言(php,python等)交互之间制定的协议。
php-cgi是什么
在windows系统上面,安装了php后,在安装目录下面有下面三个文件:
php.exe php-cgi.exe php-win.exe
以上的三个文件互不影响,我本地测试删除两个另外一个也能用。
在命令行运行一个php文件
F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts> F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts> php F:\softwares\phpStudy\PHPTutorial\index.php Hello World #php.exe运行结果 F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>php-cgi F:\softwares\phpStudy\PHPTutorial\index.php X-Powered-By: PHP/7.2.1 #php-cgi.exe运行结果 Content-type: text/html; charset=UTF-8 #php-cgi.exe运行结果 Hello World #php-cgi.exe运行结果 F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>php-win F:\softwares\phpStudy\PHPTutorial\index.php #php-win.exe运行,结果是空行 F:\softwares\phpStudy\PHPTutorial\php\php-7.2.1-nts>
apache如何支持php
apache调用php有三种方式,模块、cgi、FastCgi,这些方法网上都能找到,下面说明一下原理。
- 模块:这是apache独有的对php支持,nginx是没有这种方式的,通过这种方式apache就可以直接处理php脚本了,至于是多进程、多线程要取决于apache的工作方式。参加: Apache三种工作模式介绍与配置
- cgi(通用网关接口):当apache有php脚本需要处理时,通过走cgi协议调用php解释器
php-cgi.exe,并且php-cgi.exe会读取php.ini配置文件,作为apache的子进程。这里有个缺点:客户端浏览器的请求多了,apache创建的子进程会特别多,并且每次都重新读取php.ini配置文件。 - FastCgi就是为了解决cgi的问题,制定的协议。该协议规定,
php-cgi.exe我不再做你apache的子进程了,我独立了,这样你轻松了吧!我单独构成一个服务,这个服务规定一个master主进程,再启用几个worker进程。master负责对php.ini等配置文件,以及接收apache发过来的请求,分配给worker进程进行处理。这样就构成了apache作为客户端,FastCgi协议程序作为服务端。这个FastCgi协议程序就是PHP-fpm,它就是FastCgi协议的具体实现。
cgi和FastCgi是什么
它们都是协议,FastCgi解决了cgi的一些缺点。
php-cgi.exe和PHP-fpm是什么?
php-cgi.exe 是解释器,也可以当作一个简易的 cgi/FastCgi 管理器。比如在windows系统中nginx是如何与php结合的呢?linux通过php-fpm,但是windows没有php-fpm,这个时候打开任务管理器会发现 CGI/FastCGI(32位) 这个进程,nginx就是反向代理给它的。
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000; #这里的9000端口就是``php-cgi.exe``监听的
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:\softwares\phpStudy\PHPTutorial\php\php-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进程管理器 ,它的概念并不模糊!它启动服务监听端口,通过nginx反向代理给它,并且它自己内置php解释器。但是,但是windows上面不能使用 PHP-fpm 。
对于客户端浏览器而言, nginx/apache 是服务端。对于 PHP-fpm 而言, apache/nginx 是客户端。
总结
cgi、fastcgi是协议,是标准,是web服务器到后台脚本语言之间的协议。
php-cgi和PHP-fpm是程序,至于php-cgi是解释器还是管理器,网上怎么说的也有,并且它也能监听端口处理web服务器代理的请求,那它就是简单的 cgi/FastCgi进程管理器 管理器吧!
参考
以上所述就是小编给大家介绍的《困扰已久的问题cgi、fastcgi、PHP-fpm汇总》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 困扰无数人的难题:Java究竟如何进阶
- 直播回顾 | 困扰多年的分库分表问题终于解决了
- 一个困扰我 122 天的技术问题,我好像知道答案了
- 谷歌解决了 Chrome 72 给用户带来困扰的“F6”问题
- 为管理复杂组件状态困扰?试试 vue 简单状态管理 Store 模式
- 深思考:它把手中的 AI 三叉戟,掷向了困扰两癌筛查的效率顽疾 | 创业
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to Genetic Algorithms
Melanie Mitchell / MIT Press / 1998-2-6 / USD 45.00
Genetic algorithms have been used in science and engineering as adaptive algorithms for solving practical problems and as computational models of natural evolutionary systems. This brief, accessible i......一起来看看 《An Introduction to Genetic Algorithms》 这本书的介绍吧!
RGB CMYK 转换工具
RGB CMYK 互转工具
HEX HSV 转换工具
HEX HSV 互换工具