设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

PHP 之 FastCGI 与 mod_php

2019-7-23 03:42 发布者: 低级黑 评论 0 查看 1025
PHP 之 FastCGI 与 mod_php网上关于 于FastCGI与mod_php的知识 比力 庞杂 而不 片面 ,故在 此收拾整顿 一下,以便入门学习者查阅便当 。 配景PHP最经常使用 的体式格局 因而 模块的体式格局 (mod_php)运行 在 Apache中,也是Apache

PHP 之 FastCGI 与 mod_php

网上关于 于FastCGI与mod_php的知识 比力 庞杂 而不 片面 ,故在 此收拾整顿 一下,以便入门学习者查阅便当 。 配景PHP最经常使用 的体式格局 因而 模块的体式格局 (mod_php)运行 在 Apache中,也是Apache运行 PHP的默认 体式格局 ;但在 Nginx中,Nginx又利用的是PHP-FPM,但是PHP-FPM毕竟 是个什么东东?跟php有什么干系 ?本日我们 一起 来根究 一番。

网上关于 于FastCGI与mod_php的知识 比力 庞杂 而不 片面 ,故在 此收拾整顿 一下,以便入门学习者查阅便当 。

配景

PHP最经常使用 的体式格局 因而 模块的体式格局 (mod_php)运行 在 Apache中,也是Apache运行 PHP的默认 体式格局 ;但在 Nginx中,Nginx又利用的是PHP-FPM,但是PHP-FPM毕竟 是个什么东东?跟php有什么干系 ?本日我们 一起 来根究 一番。

PHP处理处罚器(PHP handlers)

起首需要 记着的是,任何一种Web效能 器(Apache、Nginx等)都是被操持成向用户发送html、图片等静态资源的,Web效能 器自己 实在不 克不 及 表明任何静态 脚本(PHP、Python等)。

PHP处理处罚器就是用来表明Web使用 中的PHP代码,并将它表明为HTML或者 其余 静态资源,然后 将剖析 的效果传给Web效能 器,着末 再由Web效能 器发送给用户。

年夜 少数 的Web效能 器都不 能 剖析 PHP代码,因而 它需要 一个能剖析 PHP代码的步伐 ,这就是PHP处理处罚器。

如今 我们 知道 了,Apache与Nginx都需要 PHP处理处罚器来处理处罚php代码,那么怎样 毗连上效能 器与php处理处罚器呢?也就是说服 务器与php处理处罚器怎样 通讯?

答案是颠末 SAPI(Server Application Programming Interface 效能 器端使用 编程端口),简单来说,SAPI指的是PHP详细使用 的编程接口, 就像PC异常 ,不论 装置 哪些利用体系,只需 满意了PC的接口标准 都可以在 PC上正常 运行 , PHP脚本要实验有许多种体式格局 ,颠末 Web效能 器,年夜 约 直接在 下令行下,也可以 嵌入在 其余 步伐 中,有喜好 大家 可以研讨 PHP内核。

我们 这里继续评论辩论 PHP最经常使用 的SAPI供给 的2种毗连方法 :mod_php和 mod_fastcgi。

mod_php形式

我们 回顾一下,Apache是怎样 可以或许辨认php代码的?是不 是Apache的设置文件httpd.conf中加上年夜 约 修正 多么 几 句:

//增长

LoadModulephp5_module modules/libphp5.so

AddTypeapplication/x-httpd-php.php

//修正

DirectoryIndexindex.php index.html index.htm index.html

也即php作为Apache的一个子模块来运行 ,当颠末 web访问 php文件时,Apache就会调用php5_module来剖析 php代码。

设置加载mod_php模块后,php便是Apahce历程自己一部门,每一 个 新的Apache子历程都会 加载此模块。

mod_fastcgi形式

我们 先看PHP-FPM官网的分析:

PHP-FPM - A simple and robust FastCGI Process Manager for PHP

PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites.

PHP-FPM是一个PHP的FastCGI历程办理 器,表明的非常 简单。这分析PHP-FPM是帮手 mod_fastcgi形式 举利用命 的,但是 FastCGI又是个什么工具 ?办理 着什么历程?

什么是CGI?

CGI(Common Gateway Interface) 是WWW技能中最紧张的技能之一,有着不 可替换的重腹地 位 。

CGI是外部 使用 步伐 (CGI步伐 )与Web效能 器之间的接口尺度,是在 CGI步伐 和 Web效能 器之间转达信息的规程。

CGI标准 允许Web效能 器实验外部 步伐 ,并将它们的输入 发 送给Web赞叹 器,CGI将Web的一组简单的静态超媒体文档酿成一个完备的新的交互式媒体。

说白了,CGI是一种外部 使用 步伐 (CGI步伐 )与Web效能 器的协议,CGI是为了包管Server转达已经 往 的数据是尺度格局 。

什么是FastCGI?

FastCGI像是一个常驻(long-live)型的CGI,它可以不绝实验着,只需 激活后,不 会每一 次都要耗费时间 去fork一次(这是CGI最为人诟病的fork-and-execute 形式 )。它还支持 散布 式的运算, 即 FastCGI 步伐 可以在 网站效能 器以外的主机上实验并且 继续来自别的网站效能 器来的乞求 。

FastCGI是言语 无关 的、可伸缩架构的CGI开放扩展,其紧张举动是将CGI表明器历程坚持 在 内存中并因而 得到 较高的功能 。家喻户晓 ,CGI表明器的反复 加载是CGI功能 低下的紧张原因 ,如果CGI表明器坚持 在 内存中并继续FastCGI历程办理 器调理,则可以供给 精良的功能 、伸缩性、Fail- Over特性 等等。

一样平常情况下,FastCGI的整个使命 流程是多么 的:

Web Server启动时载入FastCGI历程办理 器(IIS ISAPI或者 Apache Module)。

FastCGI历程办理 器自己 初始化,启动多个CGI表明器历程(可见多个php-cgi)并等候WebServer的毗连。

当客户端乞求 到达 Web Server时,FastCGI历程办理 器决议 并毗连到一个CGI表明器。 Web server将CGI情况变量和 尺度输入 发送到FastCGI子历程php-cgi。

FastCGI子历程完成 处理处罚后将尺度输入 和 错误信息从同一连接前往 Web Server。当FastCGI子历程封锁 毗连时,乞求 便告处理处罚完成 ,FastCGI子历程接着等候并处理处罚来自FastCGI历程办理 器(运行 在 Web Server中)的下一个毗连,在 CGI形式 中,php-cgi在 此便曾经 经 加入 。

也就是说FastCGI是CGI的晋级 版,一种言语 无关 的协议,用来沟通步伐 (如PHP, Python,Java)和 Web效能 器(Apache2, Nginx), 实际 上任何言语 编写的步伐 都可以颠末 FastCGI来供给 Web效能 。

FastCGI的特性 是会在 一个历程中顺次 完成 多个乞求 ,以到达进步服从 的目的,年夜 少数 FastCGI完成 都会 掩护 一个历程池。

普通表明:FastCGI事先 就需要 启动,并且 可以启动多个CGI模块,在 那边不绝运行 等着web发乞求 ,然后 再给php剖析 运算,完成 后天生html前往 给web后,但是完成 后它不 会加入 ,而是继续等着下一个web乞求 。

PHP-FPM

PHP-FPM就是针关于 于PHP的FastCGI的一种完成 ,他担任 办理 一个历程池,来处理处罚来自Web效能 器的乞求 。

但是PHP-FPM仅仅是个“PHP FastCGI 历程办理 器”, 它仍会调用PHP表明器自己来处理处罚乞求 ,PHP表明器(在 Windows下)就是php-cgi.exe。

更多PHP相干技能请搜刮千锋PHP,做真实的 自己,用本心做教导。

互联网+期间,时间要坚持 学习,携手千锋PHP,Dream

It Possible。


来源:https://www.jianshu.com/p/13e3751cb795
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:编译安装php下一篇:2019 为什么我们还会继续使用 PHP ?

相关阅读

一周热门

头条攻略!

日排行榜

相关分类