运用 Swoole 来加快你的 Laravel 应用

图片 1

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 操作
图片 2

从而要我们以 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 location
sudo echo "extension=swoole.so" > php.ini  # add the extension=swoole.so to the end of php.ini
php -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 read
Requests/sec:     80.93
Transfer/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 read
Requests/sec:   8717.00
Transfer/sec:      1.55MB

重多信息

在 Github Repo
查看官方包,
也堪参考 合法文档 获取更多信息。

再度多现代化 PHP 知识,请赴 Laravel / PHP
知识社区

相关文章