FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持 在内存中并因此获得较高的性能。众所周知,CGI解释器的反复加载是CGI性能低下的主要原因, 如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性、 Fail-Over 特性等。
FastCGI的工作原理是:
(1) FastCGI进程管理器自身初始化,启动多个CGI解释器进程(多个php-cgi进程)并等 待来自Web Server的连接。在本文中,采用PHP-FPM进程管理器启动多个php-cgi FastCGI进 程。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字两种方式启动。
(2) 当客户端请求到达Web服务器(Nginx)时,Web服务器将请求采用TCP协议或UNIX 套接字方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程)。 Web服务器将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。
(3)
FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web服务器(Nginx).
当FastCGI子进程关闭连接时,请求便告知处理完成。FastCGI子进程接着等待并处理来自FastCGI 进程管理器的下一个连接。而在一般的普通CGI模式中,php-cgi在此便退出了。
所以,你可以想象普通的CGI模式有多慢。每一个Web请求PHP都必须重新解析php.ini、 重新载入全部扩展并重新初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生 一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
PHP FastCGI 的优点:
(1) PHP脚本运行速度更快。PHP解释程序被载入内存而不用每次需要时从存储器读取, 此举极大提升了依靠脚本运行站点的性能。
(2) 须要使用的系统资源更少。由于服务器不用在每次需要时都载入PHP解释程序,你可 以将站点的传输速度提升很多而不必增加CPU负担。
(3) 不需要对现有的代码作任何改变。运行在Apache+PHP上的程序,无须修改即可适用 于 PHP 的 FastCGI。

php 中 FastCGI与cgi的关系,何为fastcgi的更多相关文章

  1. Nginx 解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  2. Nginx解析PHP的原理 | CGI、FastCGI及php-fpm的关系

    Nginx解析PHP的原理,CGI/FastCGI以及PHP-Fpm的关系. 一.PHP+Nginx应运而生的场景.随着互联网的发展,用户对此接受面广,数据流的增大使得Web端的运行承载压力日益增大, ...

  3. Nginx-->进阶-->原理-->Nginx+php+fastcgi的原理与关系

    一.用户对动态PHP网页访问过程 用户浏览器发起对网页的访问:http://192.168.1.103/index.php 用户和nginx服务器进行三次握手进行TCP连接(忽略包括nginx访问控制 ...

  4. 基础概念PHP-FPM、FastCGI和CGI

    在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 基 ...

  5. CGI 、PHP-CGI、FASTCGI、PHP-FPM

    CGI是干嘛的? CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者.web server(比如说nginx)只是内容的分发者.比如,如果请求的是/index/ht ...

  6. fastcgi与cgi的区别

    fastcgi与cgi的区别 先讲下cgi:cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fo ...

  7. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  8. 转iOS中delegate、protocol的关系

    iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolc ...

  9. java中接口与多重继承的关系

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

随机推荐

  1. iOS UIView性能最优的设计圆角并且绘制边框颜色

    //以给cell切圆角为例- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollection ...

  2. Redis有序集内部实现原理分析(二)

    Redis技术交流群481804090 Redis:https://github.com/zwjlpeng/Redis_Deep_Read 本篇博文紧随上篇Redis有序集内部实现原理分析,在这篇博文 ...

  3. .NET WinForm下StatusStrip控件如何设置分隔线及部分子控件右对齐

    ssInfo.LayoutStyle = ToolStripLayoutStyle.StackWithOverflow;//StatusStrip 控件 tsslUpdate.Alignment = ...

  4. Beta阶段 敏捷冲刺day1

    一.提供当天站立式会议照片一张: 二. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: (2) 今天计划完成的工作: 今天大家一起讨论了一下之后几天的任务,以及如何对网页进 ...

  5. delphi 删除字符串的回车、空格、Tab键

    myStr:=StringReplace(myStr, chr(13)+chr(10), '', [rfReplaceAll]);//删除回车      myStr:=StringReplace(my ...

  6. 通达OA工作流主要表的数据结构

    flow_run_prcs 流程执行明细 字段名称 类型 中文 说明 RUN_ID 数值 流水号(关键字段) 每发起一个工作流,即创建一个全局唯一的流水号 PRCS_ID 数值 执行步骤序号 USER ...

  7. Envoy如何打败Linkerd成为L7负载平衡器的最佳选择?

    本文转自:http://www.servicemesh.cn/?/article/41 作者:MIKE WHITE 翻译:姚炳雄 原文:Using Envoy to Load Balance gRPC ...

  8. ORACLE LOG的管理

    CREATE OR REPLACE PACKAGE PLOG IS /** * package name : PLOG *<br/> *<br/> *See : <a h ...

  9. 经纬转换成point的sql

    .UPDATE xx.zd_kakou_info t,(SELECT kakou_id, kakou_lon,kakou_lat,CONCAT('POINT(' , kakou_lon ,' ',ka ...

  10. 半夜思考之查漏补缺, 在 Spring中, 所有的 bean 都是 Spring 创建的吗 ?

    Spring 是一个 bean 容器, 负责 bean 的创建, 那么所有的 bean对象都是 Spring 容器创建的吗 ? 答案是否定的. 但是乍一想, 好像所有的对象都是 Spring 容器负责 ...