為什麼要在 Swoole 上運行 Laravel?
為什麼要在 Swoole 上執行 Laravel?因為使用 Swoole 可以加速 Laravel 應用。以下這篇文章就來帶大家聊聊怎麼在Swoole上使用Laravel,希望對大家有幫助!
Swoole 是為 PHP 開發的生產級非同步程式設計框架。他是一個純C 開發的擴展, 他允許PHP 開發者在PHP 中寫入高性能,可擴展的並發TCP, UDP, Unix socket, HTTP, WebSocket 服務, 而不需要擁有太多的非阻塞I/O 編程和低階的Linux 核心知識。你可以把 Swoole 想像成 NodeJS, 但對 PHP 來說會有更高效能。 【推薦學習:swoole教學 】
為什麼要在 Swoole 上執行 Laravel?
## 下圖展示了 PHP 的生命週期。正如你所看到的那樣,當你每次運行 PHP 腳本的時候,PHP都需要初始化模組並為你的運行環境啟動Zend引擎。並將 PHP 腳本編譯為 OpCodes 以便 Zend引擎執行。 但是, 這樣的生命週期需要在每次請求的時候都執行一遍。因為單一請求所建立的環境在請求執行結束後會立即銷毀。 換句話說, 在傳統的 PHP 生命週期中, 為了腳本執行而浪費了大量的時間去創建和銷毀資源。想像Laravel 這樣的框架, 在每次請求中需要加載多少文件? 同時也浪費了大量的I/O 操作安裝
以下是swooletw/laravel-swoole 的主要特點:
- #在 Swoole 執行 Laravel/Lumen 應用程式
- 出色的效能提升至30x
- 沙盒模式隔離應用程式容器
- 支援在Laravel 應用程式中執行WebSocket 伺服器
- 支援
- Socket.io
協定
支援Swoole 表跨進程共享
$ composer require swooletw/laravel-swoole
pecl install swoole
extension=swoole.so。
php -i | grep php.ini # check the php.ini 為什麼要在 Swoole 上運行 Laravel? location sudo echo "extension=swoole.so" >> php.ini # add the extension=swoole.so to the end of php.ini php -m | grep swoole # check if the swoole extension has been enabled
訪問 官網 獲取更多的資訊。 注意:Swoole 現在只支援 Linux 和 OSX 。 Windows 伺服器現在還不支援。然後,新增服務提供者:如果你使用 Laravel ,在
config/app.php 服務提供者陣列新增該服務提供者:
[ 'providers' => [ SwooleTW\Http\LaravelServiceProvider::class, ], ]
bootstrap/app.php:
$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
基於FPM 的Nginx
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
Swoole HTTP 服務
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 查看官方包,也可以參考 官方文件 取得更多資訊。
英文原文網址:https://laravel-news.com/laravel-swoole?【相關推薦:
laravel影片教學】
以上是為什麼要在 Swoole 上運行 Laravel?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Docker環境中使用PECL安裝擴展時報錯的原因及解決方法在使用Docker環境時,我們常常會遇到一些令人頭疼的問�...

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

從PHP轉Go的困惑與選擇起因最近,我無意中得知公司內Android和嵌入式C等其他崗位同事的薪資情況,發現他們比�...

Laravel框架中Redis連接的共享與select方法的影響在使用Laravel框架和Redis時,開發者可能會遇到一個問題:通過配置...

在Laravel多租戶擴展包stancl/tenancy中自定義租戶數據庫連接使用Laravel多租戶擴展包stancl/tenancy構建多租戶應用時,...

LaravelEloquent模型檢索:輕鬆獲取數據庫數據EloquentORM提供了簡潔易懂的方式來操作數據庫。本文將詳細介紹各種Eloquent模型檢索技巧,助您高效地從數據庫中獲取數據。 1.獲取所有記錄使用all()方法可以獲取數據庫表中的所有記錄:useApp\Models\Post;$posts=Post::all();這將返回一個集合(Collection)。您可以使用foreach循環或其他集合方法訪問數據:foreach($postsas$post){echo$post->

在Laravel6項目中如何檢查Redis連接的有效性是一個常見的問題,特別是在項目依賴於Redis進行業務處理時。以下是...
