1、nginx + swoole
swoole是一个异步、并行、高性能的网络通信引擎,利用纯C措辞编写,供应了php措辞的异步多线程做事器。swoole内置了http/websocket做事器端和客户端,http2.0做事器端,支持类似Go措辞的协程,可以利用同步代码实现一步程序。
swoole采取I/O多路复用异步壅塞的Reactor模型,采取多线程Reactor+多线程Worker实现异步I/O。Reactor基于Epoll,每个Reactor可以处理无数个连接要求,因而可以轻松处理高并发。
Nginx+swoole模式下,nginx作为前端接入层转发机,swoole作为运用做事器构建高并发web做事。
2、nginx + php-fpm
FastCGI是一个中立的技能标准,php-fpm是php措辞的FastCGI进程管理器。
CGI的fork-and-execute模式有很多缺陷,每吸收一个要求就要fork一个进程处理,只能吸收一个要求做出一个相应;每一个web要求PHP都必须重新解析php.ini文件,重新载入全部扩展并初始化全部数据构造。
FastCGI会事先启动起来,解析php.ini文件,载入扩展,初始化数据构造都只会在启动时完成,作为一个CGI管理做事器存在,利用进程/线程池预先启动一系列的子进程来等待处理。然后web做事器发过来要求,一旦FastCGI吸收到要求就交给子进程处理,不须要在吸收到要求后启动CGI,会快很多。Web做事器通过一个socket长连接要求FastCGI进程管理器。
FastCGI进程像是一个常驻CGI,在要求到达时,FastCGI进程管理器选择并连接一个PHP-CGI阐明器去吸收web做事器发送过来的环境变量和标准输入,要求处理完成后将标准输出或缺点从同一连接返回给web做事器,该PHP-CGI阐明器子进程等待处理来自FastCGI进程管理器的下一个连接。
3、apache + mod_php
mod_php模式运行php,意味着php是作为apache的一个模块来启动。只有在apache启动的时候会读取php.ini配置文件并加载扩展模块,在apache运行期间是不会再去读取和加载扩展模块的。Apache出于稳定性和安全性考虑,常日利用默认的prefork模式运行php程序。在prefork模式下,一个单独的掌握进程卖力产生子进程,这些子进程用于监听要求并作出应答。
Apache总是试图保持一些备用或空闲的子进程用于欢迎即将到来的要求,这样客户端无需在得到做事前期待子进程的产生。但是,一旦连接数多了,apache必须要天生更多的进程来相应要求,CPU对付进程的切换就很频繁,很耗事宜和资源,导致apache性能低落;同时,apache在同步壅塞I/O模型下,select遍历多个连接句柄才能知道句柄是否有事宜关照,因此效率非常低。
以上便是php有哪些运行环境的详细内容,更多请关注其它干系文章!
更多技巧请《转发 + 关注》哦!