PHP 运行模式一共包含哪些部分?背后到底做了哪些事情?使用场景是什么?底层原理是什么?

PHP 运行模式一共包含哪些部分?背后到底做了哪些事情?使用场景是什么?底层原理是什么?

PHP运行模式的种类

PHP有多种运行模式,常见的有以下几种:

CGI(Common Gateway Interface)模式:这是最早的PHP运行模式。当用户访问一个PHP页面时,Web服务器(如Apache)会启动一个新的PHP进程来处理这个请求。处理完成后,这个进程就会被销毁。可以把它想象成每次有客人来餐厅吃饭,餐厅都要临时雇一个厨师来做菜,做完菜就把厨师辞退。FastCGI模式:FastCGI是对CGI的改进。它不会每次请求都启动新的PHP进程,而是会启动一个或多个PHP进程池,这些进程会一直保持运行状态,等待处理新的请求。就好比餐厅提前雇了几个厨师,客人来了直接让厨师做菜,不用每次都临时雇人。模块模式:在这种模式下,PHP会作为一个模块集成到Web服务器中,例如Apache的mod_php模块。Web服务器在启动时会加载PHP模块,当有PHP请求时,直接由Web服务器调用PHP模块来处理。这就像是餐厅把厨房直接建在了餐厅里面,客人点菜后,餐厅工作人员可以直接在厨房做菜。CLI(Command Line Interface)模式:这种模式允许你在命令行中直接运行PHP脚本,而不需要通过Web服务器。比如你可以在终端中输入php script.php来执行一个PHP脚本。这就好比你自己在厨房做菜,不需要去餐厅。

背后做了哪些事情

CGI模式

Web服务器接收到用户的PHP请求。Web服务器启动一个新的PHP进程,并把请求信息传递给这个进程。PHP进程读取请求信息,执行PHP脚本,生成HTML页面。PHP进程把生成的HTML页面返回给Web服务器。PHP进程结束,释放资源。

FastCGI模式

Web服务器接收到用户的PHP请求。Web服务器从PHP进程池中选择一个空闲的进程。Web服务器把请求信息传递给选中的PHP进程。PHP进程读取请求信息,执行PHP脚本,生成HTML页面。PHP进程把生成的HTML页面返回给Web服务器。PHP进程继续等待下一个请求。

模块模式

Web服务器启动时加载PHP模块。Web服务器接收到用户的PHP请求。Web服务器直接调用PHP模块来处理请求。PHP模块执行PHP脚本,生成HTML页面。PHP模块把生成的HTML页面返回给Web服务器。

CLI模式

用户在命令行中输入PHP脚本的执行命令。系统启动PHP解释器。PHP解释器读取并执行PHP脚本。PHP解释器把脚本的输出结果显示在命令行中。

使用场景

CGI模式

适合在资源有限的环境中使用,因为它每次请求都会启动新的进程,不会占用过多的系统资源。对于一些不经常访问的网站,使用CGI模式可以节省资源。

FastCGI模式

适合高并发的网站,因为它可以通过进程池来处理大量的请求,提高处理效率。大多数现代网站都使用FastCGI模式。

模块模式

适合对性能要求较高的网站,因为PHP模块与Web服务器紧密集成,减少了进程间的通信开销。对于一些对安全性要求较高的网站,模块模式可以更好地控制PHP的运行环境。

CLI模式

适合开发命令行工具,例如定时任务脚本、数据处理脚本等。开发人员可以在本地使用CLI模式来调试PHP脚本。

底层原理

CGI模式

CGI模式的底层原理是基于进程的创建和销毁。Web服务器通过系统调用启动一个新的PHP进程,并把请求信息作为环境变量和标准输入传递给这个进程。PHP进程读取这些信息,执行PHP脚本,然后把输出结果通过标准输出返回给Web服务器。

FastCGI模式

FastCGI模式使用了进程池和持久连接的技术。PHP进程池中的进程会一直保持运行状态,通过套接字与Web服务器进行通信。当有新的请求时,Web服务器会通过套接字把请求信息发送给空闲的PHP进程,PHP进程处理完请求后,再通过套接字把结果返回给Web服务器。

模块模式

模块模式的底层原理是动态链接库(DLL)或共享库(SO)的加载和调用。Web服务器在启动时会加载PHP模块,这个模块会被映射到Web服务器的内存空间中。当有PHP请求时,Web服务器会直接调用PHP模块中的函数来处理请求。

CLI模式

CLI模式的底层原理是PHP解释器的直接执行。当用户在命令行中输入PHP脚本的执行命令时,系统会启动PHP解释器,解释器会读取并解析PHP脚本,然后执行脚本中的代码。

🎊 相关推荐

波音773是大飞机还是小飞机(波音773机型介绍)
365账号限制投注怎么办

波音773是大飞机还是小飞机(波音773机型介绍)

📅 08-21 👀 6360
锚升级 (Anchor Upgrade) - [Mek]通用机械 (Mekanism) - MC百科
365账号限制投注怎么办

锚升级 (Anchor Upgrade) - [Mek]通用机械 (Mekanism) - MC百科

📅 07-09 👀 4304
刷蛋液(小知识)
365bet体育投注在线

刷蛋液(小知识)

📅 07-26 👀 5587