PHP运行模式是什么

介绍

本文将为大家详细介绍”PHP运行模式是什么”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“PHP运行模式是什么”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。

PHP有什么用

PHP是一个嵌套的缩写名称,指的是英文超级文本预处理语言(PHP:超文本预处理器)的缩写,它的语法混合了C、Java、Perl以及PHP自创新的语法,主要用来做网站开发,许多小型网站都用PHP开发,因为PHP是开源的,从而使PHP经得久不衰。

<强> PHP有五种运行模式,常见的有4种:

1。CGI(通用网关接口/公共网关接口)
2。FastCGI(常驻型CGI/万岁CGI)
3。CLI(命令行运行/命令行界面)
4. loadmodule Apache独【有】
5。ISAPI IIS独(网络服务器应用程序编程接口)【有】

备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi。dll这个文件。要在IIS6中上使用高版本PHP,必须安装FastCGI扩展,然后使IIS6中支持FastCGI。

<强>查看当前运行模式
回声php_sapi_name ();

<强> CGI模式

介绍:

CGI即通用网关接口(公共网关接口),它是一段程序,通俗的讲CGI就象是一座桥,把网页和Web服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执行程序,再把服务器执行程序的结果返还给HTML页. CGI的跨平台性能极佳,几乎可以在任何操作系统上实现。

调用过程:Fork-And-Execute模式

用户请求,→web服务器接收请求【常用Nginx, apache】→叉CGI的子进程和处理请求——比;请求处理完毕,返回结果到web服务器及销毁子进程→web服务器返回结果给用户

图解:
 PHP运行模式是什么”> <br/> <em>优势:</em> </p> <p>作为PHP最早的运行模式,每次请求都独立处理,调用过程足够简单清晰,可控性强<br/>进程间是隔离的,保证数据不会被污染</p> <p> <em>劣势:</em> </p> <p>每次请求都需要叉一个新的CGI子进程,假如同一时间并发请求一千,意味着就要叉一千个子进程,这就会导致几个问题:</p> <ol类= <李>

叉子进程需要时间,需要占用内存【即写即拷】

<李>

子进程过多,会导致CPU将大量的时间花费在上下文切换上

<李>

每次请求需要重新加载相关资源

<强> FastCGI模式

介绍:

FastCGI是CGI的升级版本,FastCGI像是一个常驻(万岁)型的CGI,在启动web服务器的时候载入FastCGI进程管理器【PHP-FPM, IIS ISAPI, Apache模块】,当有请求过来的时候,web服务器只需要交给FastCGI进程管理器处理即可。
调用过程:以PHP-FPM为例

web服务器启动的时候启动PHP-FPM主进程(主要负责分配请求给空闲的自子进程处理)以及一定数量的fast-cgi子进程(负责处理请求)。PHP-FPM,主进程管理一个进程池,池里有若干个fast-cgi子进程,每个fast-cgi子进程单独处理一个请求,互不干涉。

用户请求→web服务器接收请求【常用Nginx, apache】→检测到是PHP请求,转发主进给FPM程,→,FPM主进程指定空闲fast-cgi子进程处理请求,→子进程载入文件(如php。ini)及其他资源处理请求,→,处理结束,清除资源,结果返回主人,子进程挂起,标记为空闲→,主人将结果返回web服务器→web服务器返回结果给用户

图解:
 PHP运行模式是什么”> <br/> <em>优势:</em> </p> <ol类= <李>

从稳定性上看,FastCGI是以独立的进程池来运行CGI,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑

<李>

从安全性上看,FastCGI和宿主的web服务器完全独立,FastCGI不会影响web服务器的运行【如果PHP-FPM处于关闭状态,则会返回502错误网关给用户】

<李>

从性能上看,FastCGI把动态逻辑的处理从web服务器中分离出来,大负荷的IO处理还是留给宿主服务器,这样宿主服务器可以一心一意作IO【对于一个普通的动态网页来说,逻辑处理可能只有一小部分,更多的是图片等静态资源的加载】

劣势:

一个fast-cgi子进程同一时间只能处理一个请求,所以网站的并发性能就受限于子进程数量
如果开启的进程过多,会导致CPU将大量的时间浪费在进程的上下文切换上。

PHP运行模式是什么