php发展

首页 » 常识 » 预防 » GOPHP,让全宇宙最好的两种语言合
TUhjnbcbe - 2021/1/31 6:14:00
数据说话

从图中可以看出RoadRunner对比Nginx+FPM,运行效率是有数量级上的提升。

一般PHP服务器

传统CGI协议服务器

客户端访问某个URL地址之后,通过GET/POST/PUT等方式提交数据,并通过HTTP协议向Web服务器发出请求,服务器端将HTTP请求里描述的信息通过标准输入(stdin)和环境变量(environmentvariable)传递给新建的CGI进程。处理完成后,进程立即关闭。

Nginx+PHP-FPM模式

现在流行的PHPweb程序一般都是运行在Nginx+PHP-FPM模式下的。PHP-FPM就是PHP对FastCGI的实现。master创建并监听多个worker进程,通过共享内存获取worker的状态,进而通过信号控制worker进程。

每一个worker进程就类似一个CGI进程,收到CGI请求后会执行相应的PHP文件,并把请求内容作为PHP进程状态的一部分(_GET,_POST,_SERVER等等)。

结束请求后,worker不会立刻结束,而是继续留在workerpool.这就节省了频繁创建结束子进程的开支。

RoadRunner

为什么

现在很多PHP的企业级框架都要求你加载至少十几个文件,构造多个类并解析一些配置,以便处理简单的用户请求或查询数据库。每个任务完成后,你不得不抛弃这些代码。

收到下一个HTTP请求时,PHP-FPM会创建一个新的PHP子进程来处理这个请求,所有的文件都要重新加载一遍,即便文件可以有缓存,所有的代码也要重新运行。

如果我们可以避免对每个请求都重启一次PHP子进程,我们就可以节约很多的资源。

基本原理

RoadRunner可以看作一个升级版的Nginx+PHP-FPM.它直接把长时运行的PHP进程作为worker,直接对PHPworker进行监控和维护,每次收到

1
查看完整版本: GOPHP,让全宇宙最好的两种语言合