PHP的运行模式

gopher PHP 126 次浏览 , 没有评论

PHP的运行模式

SAPI:Server Application Programming Interface 服务器端应用编程端口。它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中

SAPI 提供了一个和外部通信的接口, 常见的有五大运行模式:

  • cgi (通用网关接口Common Gateway Interface)
  • fast-cgi (fast-cgi cgi的升级版本)
  • cli (Command Line Interface)
  • isapi (Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口)
  • apache2handler (php作为apache的模块, nginx类似)
  • 其他(continuity, embed, litespeed, milter)

CLI运行模式

Command Line Interface的简称,即PHP命令行接口,在windowslinux下都支持PHP-CLI模式,它可以直接在命令行下运行,那就意味着完全可以不要任何http容器. 例如 php test.php

应用场景

  • 定时任务
  • 开发桌面应用就是使用PHP-CLIGTK
  • 开发shell脚本

优点和缺点

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

 

  1. root@ubuntu:~$ php test.php aaa ccc bbbb
  2. Array
  3. (
  4. [0] => test.php //参数0,文件本身
  5. [1] => aaa //参数1
  6. [2] => ccc //参数2
  7. [3] => bbbb //参数3
  8. )
  9.  
  10. 4 //$argc的值,参数的总数

 

CGI运行模式

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

执行过程

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

应用场景

  • 提供http服务

优点和缺点

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

FASTCGI运行模式

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

执行过程

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

应用场景

  • 提供http服务

优点和缺点

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

模块运行模式

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

应用场景

  • 提供http服务

优点和缺点

  • 安装配置方便,不需要安装代码解析程序
  • 支持多线程,占用资源少
  • 支持大并发

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go