php运行模式

php的运行模式

1、Web模块模式(Apache等Web服务器运行的模式)

2、CGI(通用网关接口/ Common Gateway Interface)

3、FastCGI(常驻型CGI / Long-Live CGI)

4、CLI(命令行运行 / Command Line Interface)

1、模块模式

web服务器将php作为module方式加载到服务器中,以Apache为例,需要在配置中开启php模块的加载。

LoadModule php7_module libexec/apache2/libphp7.so

开启配置后,php将成为apache的一个子模块。当Apache接收到请求后,会调用php7_module来解析php代码。php模块与Apache之间则通过sapi接口来进行通信。

module模式的缺点:php作为apache的一部分,php出现问题,会导致Apache也不可用

一个http请求的执行过程如下:
在这里插入图片描述

apache -> httpd -> php7_module -> sapi -> php
2、CGI

CGI(Common Gateway Interface)全称是“通用网关接口”,是 Web Server 与 Web Application 之间数据交换的一种协议。其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。php的CGI程序名称为:php-cgi

CGI协议规定了web服务器与php之前的数据通信标准,例如需要传输的url、参数、header头等。

优点:CGI的好处就是完全独立于任何服务器,仅仅是做为中间分子。提供接口给apache和php。他们通过cgi搭线来完成数据传递。这样做的好处了尽量减少2个的关联,使他们2变得更独立。

缺点:每一次web请求都会有启动和退出过程,也就是最为人诟病的fork-and-execute模式,不能承受高并发

3、FastCGI

快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与Web服务器通信的协议。FastCGI是早期通用网关接口(CGI)的增强版本。FastCGI致力于减少web服务器与CGI程序之间交互的开销,从而使服务器可以同时处理更多的网页请求。

FastCGI程序运行原理:

  • FastCGI 进程管理器启动时会创建一个 主(Master) 进程和多个 CGI 解释器进程(Worker 进程),然后等待 Web 服务器的连接。
  • Web 服务器接收 HTTP 请求后,将 CGI 报文通过 套接字(UNIX 或 TCP Socket)进行通信,将环境变量和请求数据写入标准输入,转发到 CGI 解释器进程。
  • CGI 解释器进程完成处理后将标准输出和错误信息从同一连接返回给 Web 服务器。
  • CGI 解释器进程等待下一个 HTTP 请求的到来。

FastCGI与CGI特点:

  1. 对于CGI来说,每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展,并重新初始化全部数据结构。而使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
  2. 由于FastCGI是多进程,所以比CGI多线程消耗更多的服务器内存,php-cgi解释器每进程消耗7至25兆内存,将这个数字乘以50或100就是很大的内存数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值