php的运行模式


php一共分为五大运行模式

  1. cgi(通用网关接口Common Gateway Interface)
  2. fast-cgi(fast-cgi是cgi的升级版本)
  3. cli(Comman Line Interface)
  4. isapi(Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口)
  5. apache2handler(将php作为apache的模块,nginx类似)

其他(continuity,embed,litespeed,milter等)不常见

1、CGI运行模式

概述:CGI即通用网关接口Common Gateway Interface,它是一段程序,通俗的讲CGI就像是一座桥,把网页和web服务器中的执行程序链接起来,它把http服务器接收的指令传递给执行程序,再把执行程序的结果返还给http服务器。CGI的跨平台性极佳,几乎可以在任何操作系统上实现。

执行过程:  

  1. http服务器接受到用户请求后,例如index.php,会通过它配置的CGI服务来执行  
  2. 生成一个php-cgi.exe的进程,并执行php程序  
  3. 执行的返回结果交给http服务器

应用场景:

  • ·提供http服务

优点和缺点:

  • ·跨平台,几乎可以在任何操作系统上实现
  • ·web和server是独立的,结构清晰,可控性强
  • ·性能比较差,来一个请求,fork一个进程,100个请求就会fork100个进程,消耗资源较多
  • ·最近几年已经很少见到使用这种模式了

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

  1. web服务器启动时,载入FastCGI进程管理器
  2. FastCGI进程管理器会启动多个CGI进程等待web服务器的链接
  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并链接到一个CGI解释器。Web server将环境变量和标准输入发送到FastCGI子进程php-cgi
  4. FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web server。当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI京城管理器(运行在Web Server中)的下一个链接。在CGI模式中,php-cgi在此便退出了。

优点和缺点:

  1. 跨平台,几乎可以在任何操作系统上实现
  2. web和server是独立的,结构清晰,可控性强,并不需要web升级而变化
  3. 支持大并发
  4. 多进程,消耗较多内存

3、CLI运行模式
概述:Command Line Interface的简称,即PHP命令行接口,在windows和linux下都支持PHP-CLI模式,它可以直接在命令行下运行,一位置完全可以不要任何http容器。例如 php test.php

应用场景:

  • 定时任务
  • 开发桌面应用就是使用php-cli和gtk包
  • 开发shell脚本

优点和缺点

  • 利用crontab去跑php,可以给服务器减压,当然在这里有一个条件,就是实时性要求不高。比如:sns中的好友动态,这个实时要求不高,但是数据量比较大,这个时候定时跑的话,会给web服务器,数据库服务器分担不小的压力。
  • 就是我们要定时去完成某一个事情,比如:我要删除一个月前,用户留言,这个时候,写的php脚本在crontab去执行,一天跑一次就行,而不是手动执行php程序。
  • 无法为普通用户提供http服务


4、模块运行模式
指将php作为web服务器的一个模块运行

应用场景:
提供http服务

优点和缺点:

  • 安装配置方便,不需要安装代码解析程序
  • 支持多线程,占用资源少
  • 支持大并发(实际上不如FastCGI模式)
posted @ 2019-08-02 14:41  独孤靖云  阅读(221)  评论(0编辑  收藏  举报