海天无影's Blog

PHP运行模式:CGI,Fast-CGI,PHP-FPM,PHP-Cli

/ 2评 / 0

Contents

之前在安装 swoole 的时候,要求 php 支持cli模式,当时还花了一番功夫,使用的 lnmp 升级了 php 模块才得以安装使用。本来对多种 php 运行模式并不理解,今天看到一篇文章介绍,PHP有多种运行模式,常见的Fast-CGI,PHP-FPM模式我们归纳为传统的web模式,还有一种模式属于命令行模式:PHP-Cli。

CGI协议模式

CGI模式是指通用网关接口(Common Gateway Interface),它允许web服务器通过特定的协议与应用程序通信, 调用原理大概为:

用户请求->Web服务器接收请求->fork子进程 调用程序/执行程序->程序返回内容/程序调用结束->web服务器接收内容->返回给用户 。

由于每次用户请求,都得fork创建进程调用一次程序,然后销毁进程,所以性能较低。

Fast-CGI 协议模式

Fast-CGI是CGI模式的升级版,它像是一个常驻型的cgi,只要开启后,就可一直处理请求,不再需要结束进程, 调用原理大概为:

web服务器fast-cgi进程管理器初始化->预先fork n个进程

用户请求->web服务器接收请求->交给fast-cgi进程管理器->fast-cgi进程管理区接收,给其中一个空闲fast-cgi进程处理->

处理完成,fast-cgi进程变为空闲状态,等待下次请求->web服务器接收内容->返回给用户。注意,Fast-CGI和CGI都是一种协议,开启的进程是单独实现该协议的进程。

PHP-FPM模式

PHP-FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。

它的功能包括:

PHP-FPM的工作原理大概为:

php-fpm启动->生成n个fast-cgi协议处理进程->监听一个端口等待任务

用户请求->web服务器接收请求->请求转发给php-fpm->php-fpm交给一个空闲进程处理 ->进程处理完成->php-fpm返回给web服务器->web服务器接收数据->返回给用户。

PHP-Cli模式

php-cli模式属于命令行模式,对于很多刚开始学php就开始wamp,wnmp的开发者来说是最陌生的一种运行模式。

该模式不需要借助其他程序,直接在控制台输入php xx.php 就能执行php代码。

命令行模式和常规传统的web模式明显不一样的是:

在php-cli中,是没有超时时间的,也无法通过 set_time_limit 设置超时时间,举个例子:

<?php
 set_time_limit(30);
 while (1){
     echo 1;
     sleep(1);
 }

这段代码,在常规web下运行,只要到30秒就会报Fatal error: Maximum execution time of 30 seconds exceeded in ……这样的错误。

而在php-cli中,这段代码将会一直执行,一直输出1到控制台中。

原文链接:https://www.helloweba.net/php/611.html

2条回应:“PHP运行模式:CGI,Fast-CGI,PHP-FPM,PHP-Cli”

  1. 世纪之光说道:

    活过来了啊,怎么又开始玩PHP了

发表评论

电子邮件地址不会被公开。