• 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模式)
  • 相关阅读:
    《原創》實現禁止 WTL CTabView 中標籤的拖曳行為。 (Disable Dragging Operation of CTabView)
    《轉貼》ATL NTService 運作流程
    《轉貼》WTL 之 m_hWndMDIClient
    《原創》加強版的 C++ 字串型別
    《原創》建立最基礎的 Irrlicht 3D 引擎的應用框架。(for vc2008)
    《轉貼》關於 ios::app 與 ios::ate 簡易說明
    《轉貼》WTL for MFC programmer 系列文章
    《轉貼》以Virtual Inheritance及Template讓C++能實現C#中的sealed
    Oracle学习笔记(concat和substr)
    Oralce学习笔记(sql取一张表的数据插入另一张表)
  • 原文地址:https://www.cnblogs.com/lxhyty/p/11288485.html
Copyright © 2020-2023  润新知