中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Swoole怎么提高Laravel性能

發布時間:2021-05-25 15:59:04 來源:億速云 閱讀:232 作者:Leah 欄目:編程語言

使用Swoole怎么提高Laravel性能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

環境1:

  • 硬件: 1 CPU, 4 Cores, 16GB Memory

  • MacOS 10.15.3

  • PHP 7.3.12(啟用opcache)

  • Swoole 4.4.13

  • Shadowfax 2(20個worker進程)

這個環境也就是我個人的Macbook Pro,性能比較好。我用wrk啟動4個線程,并發200進行壓測:

wrk -t4 -c200 http://127.0.0.1:1215/

結果為 12430 rps

Running 10s test @ http://127.0.0.1:1215/
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    26.44ms   31.44ms 212.73ms   84.28%
    Req/Sec     3.13k   839.99     6.07k    65.75%
  124418 requests in 10.01s, 312.06MB read
  Socket errors: connect 0, read 54, write 0, timeout 0
Requests/sec:  12430.20
Transfer/sec:     31.18MB

環境2:

  • 硬件: 2 CPUs, 2 Cores, 4GB Memory

  • CentOS 7.5.1804

  • PHP 7.3.16(啟用opcache)

  • Swoole 4.4.17

  • Shadowfax 2(10個worker進程)

這個環境是某云的一個虛擬云服務器實例,配置一般。我用wrk啟動2個線程,并發100進行壓測:

wrk -c100 http://127.0.0.1:1215/

結果為 4001 rps

Running 10s test @ http://127.0.0.1:1215/
  2 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    25.06ms   12.11ms  85.92ms   60.94%
    Req/Sec     4.02k    41.46     4.08k    79.79%
  40321 requests in 10.08s, 101.13MB read
Requests/sec:   4001.76
Transfer/sec:     10.04MB

性能表現還不錯吧?比起傳統的PHP-FPM,已經有了巨大的提升。

安裝與使用

Shadowfax的安裝非常簡單,只需要兩個步驟即可搞定:

第一步,使用Composer將Shadowfax安裝到你的Laravel項目中去:

composer require huang-yi/shadowfax

第二步,使用Laravel的Artisan命令shadowfax:publish來發布配置文件:

php artisan shadowfax:publish

執行完后,在你的項目根目錄就會創建一個名為shadowfax.yml的配置文件,你需要根據環境進行調整。當然這個文件會被自動添加到.gitignore中去,就像.env文件一樣,在不同的環境下配置可能是不一樣的。

現在就可以通過Shadowfax命令來啟動你的服務:

php shadowfax start

假如是默認配置的話,就可以通過http://127.0.0.1:1215訪問你的應用了。當然,這只是簡單的使用,更多的信息可前往Shadowfax項目主頁查看。

為什么選擇Shadowfax

當然,有些朋友會問,Github上面已經有類似的開源項目了,為什么還要重復造一個輪子。其實不然,早在2016年我就開始嘗試整合Swoole和Laravel了,先后也開源了兩個相關的項目,目前這方面star數最高的 swooletw/laravel-swoole 就是fork了我早先發布的 huang-yi/laravel-swoole-http。但我并沒有對自己的項目進行推廣,因為我很清楚,之前的項目或多或少都存在一些問題,并且不能很好地支持協程,而協程恰好又是Swoole最強的武器,所以都放棄了。

現在,Shadowfax已經可以很好地支持協程了,你可以放心地開啟Swoole的協程特性。并且,Shadowfax還解決了協程環境下數據庫連接的問題,當你啟用Swoole的一鍵協程化后,Shadowfax會自動為你的數據庫連接創建連接池。最重要的是,這一切在你的應用代碼層面都是無感的,你還是像往常一樣去寫業務代碼,完全不要有心智負擔,因為Shadowfax不需要你對寫代碼的方式做出任何改變。

最后我想說明的是,Shadowfax并沒有去刻意賦予Laravel使用Swoole的能力,它的主要目的是:在不破壞Laravel開發體驗的前提下,以最小的成本提升Laravel應用的性能。我也不建議開發者在Laravel中使用Swoole的任何接口,因為Laravel本身是一個傳統PHP模式下運行的框架,對Swoole并不友好,如果你不是一個資深的Swoole開發者,很容易在使用過程中出錯。如果你的Laravel應用里未使用任何Swoole接口,這意味著你的程序在PHP-FPM模式下也是能運行的,一旦運行在Swoole上面的程序出了問題,我們便能立馬切回PHP-FPM模式,這樣可以保證程序的可用性。


Laravel 是什么

Laravel 是一套簡潔、優雅的PHP Web開發框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。

關于使用Swoole怎么提高Laravel性能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘孜| 泽普县| 遂宁市| 东辽县| 金湖县| 长岭县| 嘉善县| 富阳市| 耿马| 米易县| 新民市| 且末县| 黄冈市| 佛教| 锦屏县| 文成县| 汶川县| 栾城县| 龙州县| 万山特区| 穆棱市| 监利县| 余庆县| 萨迦县| 台南县| 宁晋县| 藁城市| 曲阜市| 吉林省| 太仓市| 梨树县| 简阳市| 澜沧| 永清县| 武威市| 绥化市| 瓦房店市| 侯马市| 楚雄市| 元阳县| 台湾省|