为什么要在Swoole上运行 Laravel?因为使用 Swoole 可以加速 Laravel 应用。下面本篇文章就来带大家聊聊怎么在Swoole上使用Laravel,希望对大家有所帮助!
Swoole 是为 PHP 开发的生产级异步编程框架。 他是一个纯 C 开发的扩展, 他允许 PHP 开发者在 PHP 中写 高性能,可扩展的并发 TCP, UDP, Unix socket, HTTP, WebSocket 服务, 而不需要拥有太多的非阻塞 I/O 编程和低级别的 Linux 内核知识。 你可以把 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 应用
出色的性能提升至 30x
沙盒模式隔离应用程序容器
支持在 Laravel 应用中运行 WebSocket 服务器
支持Socket.io协议
支持 Swoole 表跨进程共享
使用 Composer 安装:
composerrequireswooletw/laravel-swoole
这个包依赖于 Swoole 。在使用这个包之前,请确保你的机器安装了正确的 Swoole 。使用下面的命令快速安装(linux):
peclinstallswoole
在安装这个扩展之后,你需要编辑 php.ini 添加extension=swoole.so。
php-i|grepphp.ini#checkthephp.inifilelocationsudoecho"extension=swoole.so">>php.ini#addtheextension=swoole.sototheendofphp.iniphp-m|grepswoole#checkiftheswooleextensionhasbeenenabled
访问 官网 获取更多的信息。
注意:Swoole 现在只支持 Linux 和 OSX 。Windows 服务器现在还不支持。
然后,添加服务提供者:
如果你使用 Laravel ,在config/app.php服务提供者数组添加该服务提供者:
['providers'=>[SwooleTW\Http\LaravelServiceProvider::class,],]
如果你使用 Lumen ,请将下面的代码添加到bootstrap/app.php:
$app->register(SwooleTW\Http\LumenServiceProvider::class);
这个包支持包自动发现机制。如果你运行 Laravel 5.5 以上版本,你可以跳过这一步。
建立并运行起来
现在,你可以执行以下的命令来启动 Swoole HTTP 服务。
phpartisanswoole:httpstart
然后你可以看到以下信息:
Starting swoole http server…
Swoole http server started: <http://127.0.0.1:1215>
现在可以通过访问http://127.0.0.1:1215来进入 Laravel 应用。
基准测试
使用 MacBook Air 13寸(2015年产)及干净的 Lumen 5.5 项目测试:
基准测试工具: wrk
wrk-t4-c100http://your.app
基于 FPM 的 Nginx
Running10stest@http://lumen.app:99994threadsand100connectionsThreadStatsAvgStdevMax+/-StdevLatency1.14s191.03ms1.40s90.31%Req/Sec22.6510.6550.0065.31%815requestsin10.07s,223.65KBreadRequests/sec:80.93Transfer/sec:22.21KB
Swoole HTTP 服务
Running10stest@http://127.0.0.1:12154threadsand100connectionsThreadStatsAvgStdevMax+/-StdevLatency11.58ms4.74ms68.73ms81.63%Req/Sec2.19k357.432.90k69.50%87879requestsin10.08s,15.67MBreadRequests/sec:8717.00Transfer/sec:1.55MB更多信息
在Github Repo查看官方包, 也可以参考官方文档获取更多信息。
产品猿社区致力收录更多优质的商业产品,给服务商以及软件采购客户提供更多优质的软件产品,帮助开发者变现来实现多方共赢;
日常运营的过程中我们难免会遇到各种版权纠纷等问题,如果您在社区内发现有您的产品未经您授权而被用户提供下载或使用,您可按照我们投诉流程处理,点我投诉;
本文来自用户发布投稿,不代表产品猿立场 ;若对此文有疑问或内容有严重错误,可联系平台客服反馈;
部分产品是用户投稿,可能本文没有提供官方下下载地址或教程,若您看到的内容没有下载入口,您可以在我们产品园商城搜索看开发者是否有发布商品;若您是开发者,也诚邀您入驻商城平台发布的产品,地址:点我进入;
如若转载,请注明出处:https://www.chanpinyuan.cn/29169.html;