首页 » 网站建设 » phpswoolenodejs技巧_运用 Swoole 来加速你的 Laravel 应用

phpswoolenodejs技巧_运用 Swoole 来加速你的 Laravel 应用

访客 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

为什么要在 Swoole 上运行 Laravel?

下图展示了 PHP 的生命周期。
正如你所看到的那样,当你每次运行 PHP 脚本的时候,PHP 都须要初始化模块并为你的运行环境启动 Zend 引擎。
并且将 PHP 脚本编译为 OpCodes 以便 Zend 引擎实行。

phpswoolenodejs技巧_运用 Swoole 来加速你的 Laravel 应用

但是, 这样的生命周期须要在每次要求的时候都实行一遍。
由于单个要求创建的环境在要求实行结束后会立即销毁。

phpswoolenodejs技巧_运用 Swoole 来加速你的 Laravel 应用
(图片来自网络侵删)

换句话说, 在传统的 PHP 生命周期中, 为了脚本实行而摧残浪费蹂躏了大量的韶光去创建和销毁资源。
想象一下像 Laravel 这样的框架, 在每次要求中须要加载多少文件?同时也摧残浪费蹂躏了大量的 I/O 操作

因此如果我们利用 Swoole 内置一个运用级别的 Server, 并且所有脚本文件在加载一次之后便可以保存在内存中呢? 这便是为什么我们须要考试测验在 Swoole 上运行 Laravel。
Swoole 可以供应强大性能而 Laravel 则可以供应优雅代码构造利用。
这俩儿真是完美组合!

安装

以下是 swooletw/laravel-swoole 的紧张特点:

在 Swoole 运行 Laravel/Lumen 运用出色的性能提升至 30x沙盒模式隔离运用程序容器支持在 Laravel 运用中运行 WebSocket 做事器支持 Socket.io 协议支持 Swoole 表跨进程共享

利用 Composer 安装:

$ composer require swooletw/laravel-swoole

这个包依赖于 Swoole 。
在利用这个包之前,请确保你的机器安装了精确的 Swoole 。
利用下面的命令快速安装(linux):

pecl install swoole

在安装这个扩展之后,你须要编辑 php.ini 添加 extension=swoole.so。

php -i | grep php.ini # check the php.ini file locationsudo echo \公众extension=swoole.so\"大众 >> php.ini # add the extension=swoole.so to the end of php.iniphp -m | grep swoole # check if the swoole extension has been enabled

把稳: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 做事。

$ php artisan swoole:http start

然后你可以看到以下信息:

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 -c100 http://your.app

基于 FPM 的 Nginx

Running 10s test @ http://lumen.app:9999 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 1.14s 191.03ms 1.40s 90.31% Req/Sec 22.65 10.65 50.00 65.31% 815 requests in 10.07s, 223.65KB readRequests/sec: 80.93Transfer/sec: 22.21KB

Swoole HTTP 做事

Running 10s test @ http://127.0.0.1:1215 4 threads and 100 connections Thread Stats Avg Stdev Max +/- Stdev Latency 11.58ms 4.74ms 68.73ms 81.63% Req/Sec 2.19k 357.43 2.90k 69.50% 87879 requests in 10.08s, 15.67MB readRequests/sec: 8717.00Transfer/sec: 1.55MB

标签:

相关文章