白话 CGI,FastCGI,PHP-CGI,PHP-fpm

  1. 什么是 CGI?
    是公共网关接口协议,一个协议。CGI 就是规定要传哪些数据,以什么样的格式传递给后方处理这个请求的协议。

  2. 什么是 FastCGI?
    FastCGI 像是一个常驻 (long-live) 型的 CGI。和 CGI 一样的东西,做了下优化,也是一个协议

  3. 什么是 php-CGI?
    PHP-CGI是PHP自带的FastCGI进程管理器。

  4. 什么是 php-fpm?
    第三方 FastCG I的进程管理器,解决 PHP-CGI 的一些问题,并管理 PHP-CGI。

  5. php-fpm 与 fastcgi 什么关系?
    php-fpm 是针对 php 的,实现了 FastCGI 协议的,并提供了对 php-CGI 管理的一个进程管理器。

  6. php-fpm解决了什么问题?

    1. php-CGI 的平滑重启。
    2. php-CGI 的常驻管理。(这里的常驻是指在 php-CGI 进程被杀死后 php 就挂了,php-fpm 会在php 进程被杀死后重新启动 php-CGI)
  7. 动静分离实现?
    php-fpm 独立运行在非 web 服务器上,实现所谓的动静分离。

  8. php 上的 php-cgi 和 php-fpm 都是 php 对 FastCGI 协议的实现。后者还提供了 php-CGI 进程的管理。

  9. 由于FastCGI是多进程,所以比 CGI 多线程消耗更多的服务器内存。就是说在你内存不大,并发请求不高的情况下,CGI 比 FastCGI 更适合你。

  10. Web Server 一般指Apache、Nginx、IIS、Lighttpd、Tomcat 等服务器。

  11. Web Application 一般指 PHP、Java、Asp.net等应用程序。

  12. 什么是 SAPI ?SAPI(Server Application Programming Interface)是应用程序接口。PHP 中最重要的 SAPI 是 PHP-FPM。 PHP-FPM 是对 FastCGI 的实现。

  13. SAPI 通俗的讲就是php-CGI,php-cli,mod_php等,php就是php内核。SAPI 的核心就是一个结构体sapi_module_struct。php-CGI,php-cli,mod_php 都实现了该结构体。

  14. php 默认提供了很多种SAPI,常见的提供给 apache 和 nginx 的 php5_module、CGI、FastCGI,给 IIS 的 ISAPI,以及 Shell 的 CLI。

  15. 协议:规则的集合。接口:代码中协议的约束。

以上是本人平常通过文章阅读,Google搜索,加上自己的一点理解整理。有理解不对或者不准确的地方还望指正。感谢您的阅读。

本作品采用《CC 协议》,转载必须注明作者和本文链接
talk is cheap,show me the code!
Marrigan
讨论数量: 1

好文章,标记一下 :+1:

11个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!