本文主要介绍php的四种常见运行模式。本文讲解了CGI、FastCGI、APACHE2HANDLER、CLI等四种运行模式。有需要的可以参考一下。
Sapi:服务器应用编程接口服务器应用编程端口。它是php与其他应用程序交互的接口。php脚本有很多执行方式,比如通过web服务器,直接在命令行下,或者嵌入到其他程序中。SAPI为外部通信提供了一个接口。常见的SAPI有cgi、fast-cgi、cli、Apache模块的dll等。
1、CGI
也就是CGI (common gatewag interface),这是一个程序。一般来说,CGI就像一座桥梁,将网页和WEB服务器中的执行程序连接起来。它将HTML接收到的指令传递给服务器的执行程序,然后将服务器的执行程序的结果返回给HTML页面。CGI具有出色的跨平台性能,几乎可以在任何操作系统上实现。
当cgi满足一个连接请求(用户请求)时,它首先创建一个CGI子流程,激活一个CGI流程,然后处理请求,处理完毕后结束子流程。这是分叉和执行模式。所以使用cgi的服务器有多少连接请求,就会有多少cgi子进程,子进程的重复加载是cgi性能低下的主要原因。当大都市用户的请求数量非常大时,会占用大量的系统资源,如内存、CPU时间等。导致效率低下。
2、FastCGI
Fast-cgi是cgi的升级版。FastCGI就像一个长寿的CGI。可以一直执行,只要激活,每次都不会费时分叉。使用PHP-FPM(FastCGI进程管理器),全称是PHP FastCGI进程管理器进行管理。
FastCGI进程管理器(IIS ISAPI或Apache模块)在Web服务器启动时加载。FastCGI进程管理器初始化自己,启动多个CGI解释器进程(可以看到多个php-cgi)并等待来自Web服务器的连接。
当客户机请求到达Web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器。服务器向FastCGI子进程php-cgi发送CGI环境变量和标准输入。
FastCGI子进程在处理后从同一个连接向Web服务器返回标准输出和错误信息。当FastCGI子进程关闭连接时,请求被处理。FastCGI子进程然后等待并处理来自FastCGI进程管理器(运行在Web服务器中)的下一个连接。在CGI模式下,php-cgi在这里退出。
以上情况,可以想象CGI通常有多慢。每个Web请求PHP都必须重新解析php.ini,重新加载所有扩展,并初始化所有数据结构。使用FastCGI,所有这些在进程开始时只发生一次。另一个好处是持久数据库连接可以工作。
3、Apache 2处理程序
作为一个Apache模块,在系统启动后,Apache服务器会预先将进程的多个副本存储在内存中。一旦发现,它会立即使用这些备用的子流程进行处理,这样就不会出现子流程生成造成的延迟。这些服务器副本在处理完一个HTTP请求后不会立即退出,而是留在计算机中等待下一个请求。对客户端浏览器请求的响应更快,性能更高。
4、CLI
Cli是PHP的命令行运行模式。人们经常使用,但可能没有注意到(比如我们经常用linux下的“php -m”来查找php安装的哪些扩展是PHP的命令行运行模式;
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。