一、前言
最近看到社群裡很多人都在討論 Laravel-S
,我也去 Github 上檢視了一下該專案,其實 Laravel-S
是快速整合 Swoole
到 Laravel
或 Lumen
,然後賦予它們更好的效能、更多可能性的一個膠水專案。我今天正好空閒下來,心想還是測試一波,看看效能會不會有提升呢?
二、建立 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-S膠水專案到我們的 Laravel 專案上
1、通過 Composer
安裝
composer require "hhxsv5/laravel-s:~3.5.0" -vvv
2、註冊 Service Provider
(以下兩步二選一)。
-
Laravel
: 修改檔案config/app.php
,Laravel 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、執行成功後如圖:
執行結果:
訪問成功:
四、執行ab壓測
1、新開一個命令列視窗,測試Nginx伺服器下Laravel的併發量:
命令如下:
ab -n 2000 -c 100 http://laravel-s.test/
注意:上面那個命令一般是我們最常用的的,意思是對 http://laravel-s.test/ 的主頁傳送 2000 個請求 (-n 代表發多少請求) 100 個併發 (-c 代表併發的請求)
測試如圖:
2、然後繼續測試繼承laravel-S的laravel
命令如下:
ab -n 2000 -c 100 http://127.0.0.1:5200/
注意:上面那個命令一般是我們最常用的的,意思是對 http://laravel-s.test/ 的主頁傳送 2000 個請求 (-n 代表發多少請求) 100 個併發 (-c 代表併發的請求)
測試如圖:
五、結語
1、首先我們來看一下這兩個資料的對比吧,如下圖:
左邊是 Nginx
的壓測結果,右邊是整合 Laravel-S
的laravel壓測結果
2、總結
從圖中我們可以看到,整合了 laravel-S
的 Laravel
框架確實快了很多很多,但是最近看到社群中使用 laravel-S
的使用者,碰到了很多問題,但是整合了 Swoole
後速度確實上升了很多,希望 laravel-S
的作者繼續去完善,同時大家想要把自己的專案加上 laravel-S
也要慎重考慮,文章到這裡就結束了,我也沒什麼好說的,畢竟我也是個菜鳥,如果文章中有做得不對的地方和寫的不對的地方歡迎大家指出!