为什么Swoole可以加速php
发布时间:2023-01-05 11:25:02 所属栏目:PHP教程 来源:
导读: 几乎所有的 Web 容器都实现了 FastCGI 的功能。首先是 httpd。对于 PHP 来说,httpd 是通过自身来实现一个 FastCGI 的模块的。它会预先加载好 php.ini 文件中的配置。待到有请求进入需要 PHP 处理时,PHP就不需要
|
几乎所有的 Web 容器都实现了 FastCGI 的功能。首先是 httpd。对于 PHP 来说,httpd 是通过自身来实现一个 FastCGI 的模块的。它会预先加载好 php.ini 文件中的配置。待到有请求进入需要 PHP 处理时,PHP就不需要再对 php.ini 重新加载了。这也就是每改动过 php.ini 后都要重启 httpd 服务的原因。 Nginx 与 php-fpm php-fpm 也是 FastCGI 的一种实现。通常我们是将 Nginx 的 PHP 处理部分代理到 php-fpm 的端口上,交给 php-fpm 来处理。而 php-fpm 同样是通过预先加载配置,然后给到子进程的方式的,它会对进程做一些管理。 Swoole 辣么问题来了,php-fpm 虽然实现了 FastCGI,但是,它在处理请求的时候,依然要重新运行一个脚本,像 Laravel 一样的框架,一开始就要加载辣么多依赖和文件,依然是一个不小的开销。我们看一下 Laravel 的 public/index.php 的源码。 require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response); 看看前面两条语句,这需要加载多少个依赖啊,这都是大把大把的时间和资源啊,每一次请求都需要加载一遍,真是心疼啊。 那么,我们为什么不能像之前一样,能够不重新加载配置文件的 FastCGI ,来一个不用加载这么多的依赖的方式呢? 当然可以啦,这时候 Swoole 就派上用场了。既然是通过 $app->make 的方式来生成一个新的 Kernel 对象,那么 Application 的对象 $app 自然是不会有什么改变的了。所以,我们可以在收到请求之前,就把 $app 给生成好,这样就会快了,不是么?我们可以对它进行一个简单的改造。 require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php'; $serv = new \Swoole\Server\Http('127.0.0.1', 9501); $serv->on('request', function ($req, $res) use ($app) { $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $res->end($response); $kernel->terminate($request, $response); }); $serv->start(); 好了,我们现在就可以通过执行这个脚本来监听9501端口了。然后就像 Nginx 配置 php-fpm 一样来配置它就可以了。这样我们可以看到,在收到请求之前,就已经把依赖加载干净了php开发者,剩下的就是处理请求了。 当然我的这个改动很简陋,根本无法用于生产环境的,知识提供一个例子。 后记 以上只是我自己的理解和对我自己的理解进行的总结。对于 Swoole 我还在探索当中,因为它需要的知识实在是太多了,需要一点一点积累。本文可能有不对的地方,欢迎各位大神来拍砖! 作为web开发的佼佼者PHP并不逊色其他语言,加上swoole后更加是如虎添翼!进军通信 、物联网行业开发百度地图、百度订单中心等!年后更是霸占程序员招聘语言第二名,寒冬裁员期过后正是各大企业扩大招人的时期,现在市场初级程序员泛滥,进阶中高级程序员绝对是各大企业急需的人才,这套教程适合那些1-6年的PHP开发者进阶中高级提升自己,在金九银十中找到高薪职位! (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐



浙公网安备 33038102330465号