原创

Laravel-S 项目之初体验

一、前言

最近看到社区里很多人都在讨论 Laravel-S,我也去 Github 上查看了一下该项目,其实 Laravel-S 是快速集成 SwooleLaravelLumen,然后赋予它们更好的性能、更多可能性的一个胶水项目。我今天正好空闲下来,心想还是测试一波,看看性能会不会有提升呢?

二、创建 Laravel 项目

1、新建项目

laravel new laravel-S

或者使用

composer create-project laravel/laravel laravel-S --prefer-dist "6.2.*"

进行新建项目

2、配置好 .env 文件

配置如下:

APP_NAME=laravel-s
APP_ENV=local
APP_KEY=base64:aQ/ykVTPt/++KGQ27oRw6Y3SeACoCyzJOHaNlSumymY=
APP_DEBUG=true
APP_URL=http://laravel-s.test

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_s
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

注意:这里主要配置好数据库连接和 APP_URL,其他的配置项,新建项目时默认带有了

3、配置Nginx服务器

新建一个 Nginx 配置文件,写入如下配置(这里根据你自己的项目配置,能访问到项目即可)
我的 Nginx 配置文件如下:

server {
        listen 80;
        client_max_body_size 512m;
        root /Users/liangguifeng/www/laravel-S/public;
        index index.php index.html index.htm;
        server_name laravel-s.test;
        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }
        location ~ \.php$ {
                try_files $uri /index.php =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
        location ~ /\.ht {
                deny all;
        }
}

4、初次访问我们的项目,如下图,那么基本的配置就完成了

Laravel

三、安装laravel-S胶水项目到我们的 Laravel 项目上

1、通过 Composer 安装

composer require "hhxsv5/laravel-s:~3.5.0" -vvv

2、注册 Service Provider(以下两步二选一)。

  • Laravel: 修改文件config/app.phpLaravel 5.5+支持包自动发现,你应该跳过这步

    'providers' => [
        //...
        Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class,
    ],
    
  • Lumen: 修改文件bootstrap/app.php

    $app->register(Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class);
    

3、发布配置和二进制文件。

php artisan laravels publish

4、运行

php bin/laravels start

5、运行成功后如图:

运行结果:
Laravel-S 项目之初体验
访问成功:
Laravel-S 项目之初体验

四、执行ab压测

1、新开一个命令行窗口,测试Nginx服务器下Laravel的并发量:

命令如下:

ab -n 2000 -c 100 http://laravel-s.test/

注意:上面那个命令一般是我们最常用的的,意思是对 http://laravel-s.test/ 的主页发送 2000 个请求 (-n 代表发多少请求) 100 个并发 (-c 代表并发的请求)

测试如图:

Laravel-S 项目之初体验

2、然后继续测试继承laravel-S的laravel

命令如下:

ab -n 2000 -c 100 http://127.0.0.1:5200/

注意:上面那个命令一般是我们最常用的的,意思是对 http://laravel-s.test/ 的主页发送 2000 个请求 (-n 代表发多少请求) 100 个并发 (-c 代表并发的请求)

测试如图:

Laravel-S 项目之初体验

五、结语

1、首先我们来看一下这两个数据的对比吧,如下图:

Laravel-S 项目之初体验
左边是 Nginx 的压测结果,右边是集成 Laravel-S 的laravel压测结果

2、总结

从图中我们可以看到,集成了 laravel-SLaravel 框架确实快了很多很多,但是最近看到社区中使用 laravel-S 的用户,碰到了很多问题,但是集成了 Swoole 后速度确实上升了很多,希望 laravel-S 的作者继续去完善,同时大家想要把自己的项目加上 laravel-S 也要慎重考虑,文章到这里就结束了,我也没什么好说的,毕竟我也是个菜鸟,如果文章中有做得不对的地方和写的不对的地方欢迎大家指出!

3、鸣谢

正文到此结束
本文目录