• 技术文章 >php框架 >Swoole

    为什么要在 Swoole 上运行 Laravel?

    青灯夜游青灯夜游2022-04-26 09:54:53转载1016
    为什么要在 Swoole 上运行 Laravel?因为使用 Swoole 可以加速 Laravel 应用。下面本篇文章就来带大家聊聊怎么在Swoole上使用Laravel,希望对大家有所帮助!

    Swoole 是为 PHP 开发的生产级异步编程框架。 他是一个纯 C 开发的扩展, 他允许 PHP 开发者在 PHP 中写 高性能,可扩展的并发 TCP, UDP, Unix socket, HTTP, WebSocket 服务, 而不需要拥有太多的非阻塞 I/O 编程和低级别的 Linux 内核知识。 你可以把 Swoole 想象成 NodeJS, 但对于 PHP 来说将有更高性能。【推荐学习: swoole教程

    为什么要在 Swoole 上运行 Laravel?

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

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

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

    file

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

    安装

    以下是 swooletw/laravel-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 查看官方包, 也可以参考 官方文档 获取更多信息。

    英文原文地址:https://laravel-news.com/laravel-swoole?

    【相关推荐:laravel视频教程

    以上就是为什么要在 Swoole 上运行 Laravel?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:Laravel Swoole
    上一篇:为什么swoole不能用sleep 下一篇:高并发实例分享:Swoole通过聚合请求高效实现业务
    千万级数据并发解决方案

    相关文章推荐

    • php Swoole实现毫秒定时计划任务(详解)• 利用 webSocket 与 Swoole 打造一个小型聊天室(协程)• 最新的swoole-cli能支持Windows环境了!• 详细整理swoole知识点(总结分享)• 实例详解Laravel事件监听
    1/1

    PHP中文网