Laravel-S 專案之初體驗

犯二青年發表於2019-11-05

一、前言

最近看到社群裡很多人都在討論 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、鳴謝

犯二青年

相關文章