当前位置: 首页 > 后端技术 > PHP

使用Swoole加速您的Laravel应用程序

时间:2023-03-29 16:20:50 PHP

Swoole是PHP的生产级异步编程框架。他是一个用纯C开发的扩展,可以让PHP开发者不用过多的非阻塞I/O编程和底层Linux,就可以在PHP中编写高性能、可扩展的并发TCP、UDP、Unixsocket、HTTP、WebSocket服务内核知识。你可以把Swoole看成是NodeJS,但是它对于PHP会有更高的性能。为什么要在Swoole上运行Laravel?下图展示了PHP的生命周期。如您所见,每次运行PHP脚本时,PHP都需要初始化模块并为您的环境启动Zend引擎。并将PHP脚本编译成OpCodes供Zend引擎执行。但是,每次请求时都需要执行这样的生命周期。因为单个请求创建的环境会在请求执行结束后立即销毁。换句话说,在传统的PHP生命周期中,大量时间浪费在创建和销毁用于脚本执行的资源上。想象一下像Laravel这样的框架,每次请求需要加载多少个文件?同时浪费了大量的I/O操作。那么如果我们使用Swoole来搭建一个应用级的Server,并且所有的脚本文件都可以一次性加载到内存中呢?这就是为什么我们需要尝试在Swoole上运行Laravel。Swoole可以提供强大的性能,而Laravel可以提供优雅的代码结构。这两个真的是绝配!安装以下是swooletw/laravel-swoole的主要特性:在Swoole中运行Laravel/Lumen应用程序性能提升高达30倍沙盒模式应用程序容器隔离支持在Laravel应用程序中运行WebSocket服务器支持Socket。io协议支持跨进程共享Swoole表。使用Composer安装:$composerrequireswooletw/laravel-swoole这个包依赖于Swoole。在使用这个包之前,请确保你的机器安装了正确的Swoole。使用以下命令快速安装(linux):peclinstallswoole安装此扩展后,需要编辑php.ini,添加extension=swoole.so。PHP-我|grepphp.ini#查看php.ini文件位置sudoecho"extension=swoole.so">php.ini#将extension=swoole.so添加到php.iniphp-m|grepswoole#查看是否启用了swoole扩展,更多信息请访问官网。注意:Swoole目前只支持Linux和OSX。尚不支持Windows服务器。然后,添加一个服务提供者:如果你使用Laravel,在config/app.php服务提供者数组中添加服务提供者:['providers'=>[SwooleTW\Http\LaravelServiceProvider::class,],]如果你使用ForLumen,请在bootstrap/app.php添加如下代码:$app->register(SwooleTW\Http\LumenServiceProvider::class);这个包支持包自动发现机制。如果你运行的是Laravel5.5+,你可以跳过这一步。构建并运行现在,您可以执行以下命令来启动SwooleHTTP服务。$phpartisanswoole:httpstart然后可以看到如下信息:Startingswoolehttpserver...Swoolehttpserverstarted:现在可以访问http://127.0.0.1:1215进入Laravel应用。基准测试使用MacBookAir13寸(2015年出品)和干净的Lumen5.5项目测试:基准测试工具:wrkwrk-t4-c100http://your.appNginxRunning10stest@http://lumen.appbased在FPM上:99994个线程和100个连接线程统计平均StdevMax+/-Stdev延迟1.14s191.03ms1.40s90.31%Req/Sec22.6510.6550.0065.31%815requestsecin10.07sques/Transfer:223.65.KBwoolereads/1serviceRunning10stest@http://127.0.0.1:12154threadsand100connectionsThreadStatsAvgStdevMax+/-StdevLatency11.58ms4.74ms68.73ms81.63%Req/Sec2.19k350k%68.73ms2.987879请求在10.08s,15.67MBreadRequests/sec:8717.00Transfer/sec:1.55MB有关更多信息,请查看GithubRepo中的官方包,或参考官方文档了解更多信息。如需更多现代PHP知识,请访问Laravel/PHP知识社区

最新推荐
猜你喜欢