61.[PHP]PHP 程序的运行方式

来源:互联网 发布:erp是什么软件 编辑:程序博客网 时间:2024/05/22 05:19

  • SAPI
    • CGI
    • FastCGI
    • CLI
    • ISAPI
    • mod_php

转载请注明原始链接:http://blog.csdn.net/a464057216/article/details/53455210

SAPI

Server Application Programming Interface服务端应用编程接口,对于PHP来说就是PHP与其它应用交互的接口,如通过Web服务器或直接在命令行下执行。常见的SAPI有:CGI、FastCGI、CLI、ISAPI、mod_php等。

CGI

Common Gateway Interface通用网关接口,Web服务器接受客户端请求之后会将指令传递给PHP执行程序,执行程序处理生成结果之后再返回给Web服务器最后响应给客户端。CGI可以看作Web服务器和执行程序之间的桥梁。
CGI方式遇到用户请求先要创建CGI子进程然后处理请求,处理完后结束子进程(fork-and-execute模式)。所以用CGI方式的服务器有多少连接请求就会有多少CGI子进程,子进程反复加载是CGI性能低下的主要原因。

FastCGI

FastCGI是CGI的升级版,是一个常驻(long-live)型的CGI。Apache可以以mod_fcgid的形式使用FastCGI,Nginx使用PHP-FPM(FastCGI Process Manager)的形式使用FastCGI。
FastCGI进程管理器会启动多个CGI解释器进程并等待来自Web服务器的连接。客户端请求到达Web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器。Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi,FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器并响应给客户端。当FastCGI子进程关闭连接时,请求处理完成,这个子进程并不会结束而是继续等待并处理来自FastCGI进程管理器的下一个任务。

CLI

以命令行模式运行PHP程序。比如:
这里写图片描述

ISAPI

Internet Server Application Program Interface,微软提供的一套面向WEB服务的API接口,在CGI基础上进行了扩展。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入。ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。

mod_php

以Apache模块方式运行PHP,PHP解释器被“内嵌”在Apache的进程里。这种方式运行PHP的时候,哪怕Apache提供的仅仅是静态资源(如HTML),Apache的每个子进程也都会载入 mod_php,导致了比正常情况下更多的内存开销。并且这种方式使用PHP时,如果修改了php.ini,需要重启Apache重新加载配置。

如果觉得我的文章对您有帮助,欢迎关注我(CSDN:Mars Loo的博客)或者为这篇文章点赞,谢谢!

1 0
原创粉丝点击