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。

最新文章

  1. RabbitMQ消息队列(一): Detailed Introduction 详细介绍
  2. How-to-uninstall-Meteor // install Meteor manually
  3. [读书笔记]Java之动态分派
  4. "稀奇古怪的"delete this
  5. web app变革之rem(手机屏幕实现全适配)
  6. 【python】pathlib库
  7. SQL Server 身份验证 登陆
  8. css selector
  9. imageNamed 与 imageWithContentsOfFile的区别
  10. jQuery中间each实施例的方法
  11. echo和print的区别
  12. Max Factor 2710 最大的合数的质数因子
  13. [Linux]Redhat7配置本地镜像源
  14. XE2 运行时 item not found的解决办法
  15. m6c2g核心板使用笔记
  16. 【爬坑】MySQL 无法启动
  17. Beef安装与简单使用
  18. easyUI中datebox的格式显示
  19. 个人总结(Alpha阶段)
  20. 谈谈Keil 中C51的内存分配与优化

热门文章

  1. Merge join、Hash join、Nested loop join对比分析
  2. c# Parallel 并行运算 异步处理
  3. windows下的C++ socket服务器(2)
  4. windows下的C++ socket服务器(3)
  5. [转帖]Cgroups 与 Systemd
  6. jQuery : 有关TypeError: invalid ‘in’ operand obj的错误
  7. python调用docker API(CentOS6.5)
  8. python print输出到文件
  9. 【移动端debug-4】iOS下setTimeout无法触发focus事件的解决方案
  10. Day24-Ajax文件上传