在laravel中,佇列是一種操作受限制的線性表,它只允許在表的前端(隊頭)進行刪除操作,而在表的後端(隊尾)進行插入操作;透過佇列,開發者可以將耗時任務的處理往後推延,進而可以大幅提升web請求回應速度。
本教學操作環境:windows7系統、Laravel6版、Dell G3電腦。
laravel中佇列的使用
1、什麼是佇列
##佇列是一種操作受限的線性表,特殊之處在於它只允許在表的前端進行刪除操作,而在表的後端進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。 透過佇列,你可以將耗時任務 (如發送電子郵件) 的處理往後推延。延遲這些耗時的任務可以大幅提升 web 請求回應速度。2、優點
- #解耦:訊息佇列可以對系統進行解耦,提高回應速度,系統功能向內聚合,對外開放;
- 非同步:訊息佇列可以對系統非同步功能進行剝離,減少功能耦合,提供開發效率; ##削峰:訊息佇列可以削峰值限流,確保下游消費者穩定運作;
3、設定
##佇列設定檔儲存在config/queue.php 中。在這個檔案中,你可以找到框架中包含的每個佇列驅動程式的連接配置,其中包括資料庫,Beanstalkd,Amazon SQS,Redis,和一個同步驅動程式(sync-供本地使用)。 這裡使用 Redis 作為驅動,需要安裝 Redis 以及 相關擴充功能。
4、任務我們需要把一些東西放入佇列中,我們可以稱之為任務。 Laravel 框架中建立任務為我們提供了以下命令:
php artisan make:job TestJob
TestJob.php
namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;use Illuminate\Support\Facades\DB;use Symfony\Polyfill\Intl\Idn\Info;class TestJob implements ShouldQueue{ use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * Create a new job instance. * * @return void */ public function __construct() { // } /** * Execute the job. * * @return void */ public function handle() {// \Log::info('hhh'); DB::connection('test') ->table('master') ->insert([ 'name'=>'小白', 'email'=>'123@qq.com' ]); }}
5、分發
##一旦編寫了任務類,就可以使用任務本身的dispatch 方法來分派它。傳遞給 dispatch 方法的參數將會傳遞給任務的建構子。
onQueue: 指定佇列;
onConnection: 指定佇列;onConnection: 指定連線;
delay: 延遲佇列;dispatchNow: 延遲佇列;dispatchNow: 延遲佇列;
php artisan queue:workphp artisan queue: work --once 新增參數,消費指定佇列
#在路由中简单调用 Route::get('queue',function(){ \App\Jobs\TestJob::dispatch(); // \App\Jobs\TestJob::dispatch()->onQueue('qq'); });###可以看到資料庫中新增了兩個數據,並且redis中資料被消費############ ############我們再次執行路由######################7、事件佇列######### ###佇列通常是用來處理延遲任務,事件是業務邏輯處理。 Laravel 中的 事件 觸發器會分發至佇列中進行非同步業務處理,那麼這樣之後可以快速回應而不用即時等待執行結果之後才能給使用者做出提示訊息。 ###如果需要把事件中的業務存放到佇列中去,我們並不需要重新進行佇列的分發,直接在對應的監聽器中實作 Illuminate\Contracts\Queue\ShouldQueue 介面即可。 ######建立事件和監聽器###
#消费qq队列 php artisan queue:work --queue=qq###在app\providers\EventServiceProvider.php中註冊##############TestListener.php###
php artisan make:event TestEvent php artisan make:listener TestListener###修改路由###
namespace App\Listeners; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\DB; class TestListener implements ShouldQueue { /** * Create the event listener. * * @return void */ public function __construct() { // } /** * Handle the event. * * @param object $event * @return void */ public function handle() { DB::connection('test') ->table('master') ->insert([ 'name'=>'小黑', 'email'=>'234@qq.com' ]); } }###運行路由################消費佇列###
Route::get('queue',function(){ //\App\Jobs\TestJob::dispatch(); //指定队列名称 //\App\Jobs\TestJob::dispatch()->onQueue('qq'); return event(new \App\Events\TestEvent()); });#########
【相關推薦:laravel影片教學】
以上是laravel 隊列是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Laravel優化Web開發流程的方法包括:1.使用路由系統管理URL結構;2.利用Blade模板引擎簡化視圖開發;3.通過隊列處理耗時任務;4.使用EloquentORM簡化數據庫操作;5.遵循最佳實踐提高代碼質量和可維護性。

Laravel是一個現代化的PHP框架,提供了強大的工具集,簡化了開發流程並提高了代碼的可維護性和可擴展性。 1)EloquentORM簡化數據庫操作;2)Blade模板引擎使前端開發直觀;3)Artisan命令行工具提升開發效率;4)性能優化包括使用EagerLoading、緩存機制、遵循MVC架構、隊列處理和編寫測試用例。

Laravel的MVC架構通過模型、視圖、控制器分離數據邏輯、展示和業務處理,提高了代碼的結構化和可維護性。 1)模型處理數據,2)視圖負責展示,3)控制器處理用戶輸入和業務邏輯,這種架構讓開發者專注於業務邏輯,避免陷入代碼泥潭。

Laravel是一個基於MVC架構的PHP框架,具有簡潔的語法、強大的命令行工具、便捷的數據操作和靈活的模板引擎。 1.優雅的語法和易用的API使開發快速上手。 2.Artisan命令行工具簡化了代碼生成和數據庫管理。 3.EloquentORM讓數據操作直觀簡單。 4.Blade模板引擎支持高級視圖邏輯。

Laravel適合構建後端服務,因為它提供了優雅的語法、豐富的功能和強大的社區支持。 1)Laravel基於MVC架構,簡化了開發流程。 2)它包含EloquentORM,優化了數據庫操作。 3)Laravel的生態系統提供瞭如Artisan、Blade和路由系統等工具,提升開發效率。

在這個技術不斷進步的時代,掌握先進的框架對於現代程序員至關重要。本文將通過分享 Laravel 框架中鮮為人知的技巧,幫助你提升開發技能。 Laravel 以其優雅的語法和廣泛的功能而聞名,本文將深入探討其強大的特性,提供實用技巧和竅門,幫助你打造高效且維護性高的 Web 應用程序。

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

在 Laravel 中構建用戶登錄功能是一個至關重要的任務,本文將提供一個全面的概述,涵蓋從用戶註冊到登錄驗證的每個關鍵步驟。我們將深入探討 Laravel 的內置驗證功能的強大功能,並指導您自定義和擴展登錄過程以滿足特定需求。通過遵循這些一步一步的說明,您可以創建安全可靠的登錄系統,為您的 Laravel 應用程序的用戶提供無縫的訪問體驗。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

Dreamweaver CS6
視覺化網頁開發工具