很多站长朋友们都不太清楚php接口网关有什么用,今天小编就来给大家整理php接口网关有什么用,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 关于FastCGI、php-cgi、php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么? 2、 了解PHP-FPM 3、 cgi、fastcgi、php-cgi、php-fpm异同 关于FastCGI、php-cgi、php-fpm的区别是什么,各自有什么用途,以及相互间的关系是什么?fastcgi是一个通用网关接口,用于web服务器(iis, apache)和应用程序通信。
php-cgi是php平台的cgi程序
以上两个结合,可以使php整合在web服务中
php-fpm是一个独立的php-fcgi管理软件,它要整合进web服务中,需要使用代理模式
一般与nginx搭配。也可以与apache搭配
php-fpm一般不直接作为服务容器提供外网访问,而是通过常用web容器作代理
php作为服务器端的解析程序,运行模式分很多种,fastcgi, mod_php, proxy(代理)等。
与iis搭配时一般采用fast-cgi模式,iis自带fast-cgi引擎,配置好php参数即可
与apache搭配,在windows平台下,一般也是fast-cgi模式,在linux系统中一般是mod_php模式,把php作为一个子模块加载
也可以配置php-fpm 然后在apache中配置代理模式
与nginx搭配,一般就是用php-fpm+代理模式了
了解PHP-FPM在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?
PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP5.3.3后已经成为了PHP的标配。
有小伙伴要问了,FastCGI又是什么鬼?CGI程序又叫做“通用网关接口”,就是让Web服务器和你的应用程序进行交互的一个接口。就像nginx中需要配置的fastcgi_pass,一般我们会使用127.0.0.1:9000或者unix:/tmp/php-cgi.sock来配置这个参数。它的意思就是告诉nginx,过来的请求使用tcp:9000端口的监听程序来处理或者使用unix/socket来处理。它们都是指向的PHP运行程序。
再说得通俗一点,我们运行php脚本用的是
php-fpm就相当于是这个php命令。nginx通过fastcgi_pass来运行php $nginx_root(nginx配置文件中网站根目录root配置)下的index.php。所以,如果你用的是python或者其他什么语言,都可以用它们的cgi程序来让nginx调用。
FastCGI和CGI又有什么不同呢?FastCGI是启动一个socket接口,服务器应用不需要自己去运行php,只需要向这个socket接口提交请求就可以了。
php-fpm在编译php时需要添加--enable-fpm。一些通用的集成安装包如lnmp、phpStudy等都会默认编译并使用php-fpm,毕竟是标配。
上文中说过nginx可以使用127.0.0.1:9000和unix:/tmp/php-cgi.sock这两种方式来调用php-fpm。它们有什么区别呢?
前者,一般带9000端口号的,是tcp形式的调用。也就是php-fpm启动了一个监听进程对9000端口进行监听。它会调起一个tcp/ip服务,nginx在调用的时候会走一次tcp请求流程,也就是3次握手4次挥手,会走到网络七层中的第四层传输层。相对来说这种方式性能会稍差一点,启动php-fpm后使用nestat查看端口中会出现9000端口的占用。
后者,使用的是unix套接字socket服务,通过sock文件来交换信息,性能相对好一些,因为它没有tcp连接过程,也不会有9000端口的占用。
对于高负载大访问量的网站还是推荐使用unix方式,对于普通小网站来说,无所谓使用哪个都可以,tcp方式反而更容易配置和理解,也是php-fpm.conf中默认的监听方式。
php-fpm.conf配置中的listen属性用来配置监听,这里的配置要和nginx中的一致,使用tcp的就监听127.0.0.1:9000,使用unix的就设置成/tmp/php-cgi-56.sock。
以下内容摘自官方文档:
===========
各自媒体平台均可搜索【硬核项目经理】
cgi、fastcgi、php-cgi、php-fpm异同1. cgi
- 通用网关接口,就是外部应用程序(cgi程序)与web服务器之间的接口标准。
- nginx是内容分发者,如果是请求index.php,根据配置文件内容得知不是静态文件,就会去找对应的cgi程序进行解析
- cgi就是规定要传那些数据,以什么格式传递给后方进行处理的协议
- cgi工作模式,一个请求发送过来,启动cgi解释器(创建进程)-> 逻辑处理 -> 退出 (fork and exec 模式) 每次都需要重新创建进程,加载配置,浪费系统资源
2. fastcgi
- 快速通用网关接口,常驻型的cgi,不用每次都fork进程,其会使cgi解解释器进程常驻内存,所以性能较高
- master-worker模型,服务器启动时载入fastcgi进程管理器
- fastcgi会进行自身初始化,初始化时会创建多个进程
- 请求到达web服务器后,fastcgi进程管理器会选择并通过socket连接到一个cgi解释器
3. php-cgi
- php自带的cgi管理器
- php-cgi的缺点,不能平滑重启,需要重启php-cgi才能使php.ini生效
4. php-fpm
- php-fpm是php的一种fastcgi的实现,管理php的fastcgi进程池
- 能够调度php-cgi程序
- 能够实现平滑重启
- php-fpm创建一个master进程,然后创建进程池,监听socket,fork出多个子进程,子进程各自accept请求,php-fpm的子进程同时只能响应一个请求,处理完一个请求才可以accept下一个请求,多进程,同步阻塞模型
- master和worker进程之间不直接进行通信,master通过共享内存获取worker进程信息,master进程发送信号通知worker进程
- php-fpm可以同时监听多个端口,每个端口对应一个worker pool
- worker是cgi程序,php-fpm是fastcgi协议的php是实现
关于php接口网关有什么用的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php接口网关有什么用 php接口网关有什么用处的详细内容...