Swoole 是針對PHP的生產級異步編程框架。它是一種用純C語言編寫的PHP擴展,它使PHP開發人員可以在PHP中編寫高性能,可擴展的併發TCP,UDP,Unix套接字,HTTP,WebSocket服務,而無需太多的非阻塞I/O編程和Linux內核知識。 你能夠將Swoole想象成NodeJS,可是對於PHP來講,性能更高。php
下圖說明了PHP中的生命週期。 正如你所看到的,當你每次運行php腳本時,PHP都須要初始化模塊併爲你的運行環境啓動Zend Engine。 而且你的PHP腳本須要編譯爲OpCodes以供Zend Engine執行。laravel
可是,這個生命週期須要在每一個請求中重複一遍。由於爲單個請求建立的環境將在請求過程完成後當即銷燬。git
換句話說,在傳統的PHP生命週期中,它浪費了大量時間爲腳本執行構建和銷燬資源。 想象一下像 Laravel 這樣的框架,須要爲一個請求加載多少個文件? 加載文件也有不少I/O消耗。github
那麼若是咱們在Swoole之上有一個內置的服務器,而且全部的腳本能夠在第一次加載後保存在內存中呢? 這就是咱們試圖在Swoole上運行Laravel的緣由。 Swoole能夠成爲強大的性能加強器,Laravel提供了優雅的結構和代碼使用方式。 這是一個完美的組合!編程
如下是 swooletw/laravel-swoole
的主要特色:bootstrap
使用Composer安裝:數組
composer require swooletw/laravel-swoole -vvv
這個軟件包依賴於Swoole。請確保你的機器具備Swoole擴展。你可使用此命令快速安裝它:pecl install swoole
,並訪問 官方網站獲取更多信息。
注意:Swoole目前僅支持Linux和macOS。 Windows服務器不能使用Swoole。
而後,添加服務提供者:bash
若是你使用的是Laravel,請將服務提供者添加到 config/app.php
中提供者的數組中:服務器
[ 'providers' => [ SwooleTW\Http\LaravelServiceProvider::class, ], ]
若是您使用的是 Lumen,請將如下代碼附加到 bootstrap/app.php
:swoole
$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
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
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 和官方文檔獲取更多信息。
原文地址,請前往 PHPCasts