php提供的sapi有哪些?CGI、FastCGI、php-fpm、php-cgi解释
一、前言
一直对PHP的sapi是什么东西好奇,在网上一查都是各种说fpm cgi fastcgi php-cgi
直到看了鸟哥的这篇文章介绍戳这里,看到源码下的sapi目录才有所了解。
二、sapi是什么
了解下PHP的架构体系会知道sapi是PHP提供的一种供其他程序调用的接口(感觉接口这词好像不太准确,欢迎纠正),通过sapi其他程序就可以执行PHP脚本。
具体提供的sapi有:
- apache2handler
- cgi
- cli
- embed
- fpm
- litespeed
- phpdbg
三、
cgi
自己认为的和这个链接里的差不多戳这里 ,CGI是一种web server和外部程序定好数据参数的协议,php-cgi刚好这样的CGI程序,每次请求过来都要启动;
fastcgi
是因为每次都要启动CGI,要加载各种配置,初始化,所以出了fastcgi这种协议,可以不用每次启动CGI程序
php-fpm
php-fpm正是实现了fastcgi的一种sapi,看上面的sapi列表里的fpm就是了,在编译PHP时,有个
'--enable-fpm'
引用百度百科对于PHP5.3.3之前来说,是个补丁包,旨在将FastCGI进程管理整合进PHP包中,也就是说5.3.3之后已经自动编译进PHP里了
对PHP-FPM更深的源码解析在这儿戳
php-cgi
理解了上面的CGI后,这个就是PHP实现CGI的程序(~~待定,并不是很确信)
如有任何疑问,欢迎留言讨论!
php提供的sapi有哪些?CGI、FastCGI、php-fpm、php-cgi解释的更多相关文章
- Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- [转] Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- 转:nginx+CGI/FASTCGI
简介版: 1.fastcgi与cgi区别:fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程. 2.典型nginx数据传输过程:user->nginx->本地socket(请 ...
- 【转】Nginx + CGI/FastCGI + C/Cpp
接着上篇<Nginx安装与使用>,本篇介绍CGI/FASTCGI的原理.及如何使用C/C++编写简单的CGI/FastCGI,最后将CGI/FASTCGI部署到nginx.内容大纲如下: ...
- Web服务器和动态语言如何交互--CGI&FastCGI&FPM浅谈
一个用户的Request是如何经过Web服务器(Apache,Nginx,IIS,Light)与后端的动态语言(如PHP等)进行交互并将结果返回给用户的呢? 本文浅谈个人观点,可能有误,欢迎拍砖,共同 ...
- CGI FastCGI WSGI 解析
我们将服务端程序分为了web服务器和应用程序服务器. web服务器是用于处理HTML文件,让客户可以通过浏览器进行访问.主流的有apache,IIS,nginx,lghttpd等. 应用服务器处理业务 ...
- php-fpm cgi fast-cgi
基础 在整个网站架构中,Web Server(如Apache)只是内容的分发者.举个栗子,如果客户端请求的是 index.html,那么Web Server会去文件系统中找到这个文件,发送给浏览器,这 ...
- CGI/FASTCGI/ISAPI区别
一 CGI原理及其性能 1) CGI概念CGI即通用网关接口(Common Gateway Interface),它是一段程序,运行在服务器上,提供同客户端HTML页面的交互,通俗的讲CGI就象是一座 ...
- PHP运行模式(cgi,fast-cgi,cli, ISAPI ,web模块模式)【转载】
PHP运行模式有5钟: 1)cgi 通用网关接口(Common Gateway Interface))2)fast-cgi 常驻 (long-live) 型的 CGI3)cli 命令行运行 (C ...
随机推荐
- J.U.C ThreadPoolExecutor解析
Java里面线程池顶级接口是Executor,但严格意义上讲Executor并不是一个线程池,而是一个线程执行工具,真正的线程池接口是ExecutorService.关系类图如下: 首先Executo ...
- Mysql 范围查询优化
Range查询:用单独的Index的一个或多个index值来检索表的子集行数据,当然包含多个index. 1:一个index (单一部分)的range access 方法:(eg : 指的这种key ...
- Oracle问题之字符集问题,登陆sqlplus出现问号
退出sql SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK show parameter nls_la
- Python3之数据类型
1.基本数据类型数字类型整型 int浮点型 float布尔型 bool: True==1.False==0复数类型 complex算术运算符 + - * / // % **赋值运算符 += -= *= ...
- Spring-AOP标签scoped-proxy
<aop:scoped-proxy/>介绍: Spring的Bean是有scope属性的,表示bean的生存周期.scope的值有prototype.singleton.session.r ...
- mysql-关联查询
MySQL关联查询的三种写法: SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id);SELECT * F ...
- 两层嵌套list,选取list中最长的list的长度
# coding=utf-8 import pandas as pd file_path = "test_aa.xlsx" dt = pd.read_excel(file_path ...
- java编程中常用英语单词
JAVA 省略语与名词解释 -------------------------------- J2EETM----JavaTM 2PlatformEnterpriseEdition : J2EE(JA ...
- js中键盘按键对应的键值
js键盘键值 keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 1 ...
- Java的IO系统
Java IO系统 "对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务." 由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的.其中最大的 ...