laravel 队列queue
隊列
Laravel隊列服務為各種不同的后臺隊列提供統一的API
允許推遲耗時任務(例如發送郵件)的執行,從而大幅提高web請求速度
?
配置文件
Config/queue.php
支持模式 Supported: "sync", "database","beanstalkd", "sqs", "redis",
//默認選擇的是同步驅動
'default' =>env('QUEUE_DRIVER', 'sync'),
步驟(以database發送郵件為例)
1.????遷移隊列需要的數據表
a.?????修改env里的QUEUE_DRIVER=database
?
b.?????生成遷移php artisan queue:table
Migration created successfully!
可在database/migrations里看到一個create_jobs_table.php
?
c.??????執行php artisan migrate
Migrating:2017_09_30_092257_create_jobs_table
Migrated:? 2017_09_30_092257_create_jobs_table
2.????編寫任務類
生成任務php artisan make:job SendEmail
Job created successfully.
可在app/jobs里看到一個SendEmail.php
<?phpnamespace App\Jobs;use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Mail; class SendEmail implements ShouldQueue {use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;protected $email;/*** Create a new job instance.** @return void*/public function __construct($email){$this->email = $email;}/*** Execute the job.** @return void*/public function handle(){Mail::raw('郵件內容', function($message) {//收件人$message->to($this->email);});} }3.????推送任務到隊列
Controller
public function queue() {//dispatch 已經基礎controller里已經引用dispatch(new SendEmail('827599490@qq.com')); }這時可以打開數據庫看一下,數據庫里會多一條,這時已經成功
4.????運行隊列監聽器
執行命令php artisan queue:listen
[2017-09-30 09:39:06] Processing:App\Jobs\SendEmail
監聽中了,這時可以運行 controller 下的queue看下效果了
5.????處理失敗任務
添加失敗表
a.生成遷移php artisan queue:failed-table
Migration created successfully!
可在database/migrations里看到一個create_failed_jobs_table.php
?
b.執行php artisan migrate
Migrating: 2017_09_30_092257_ failed_create_jobs_table
Migrated:? 2017_09_30_092257_ failed_create_jobs_table
數據庫里多了failed_create_jobs
?
操作執行錯誤的記錄
查看所有錯誤php artisan queue:failed
執行錯誤ID為1的記錄 php artisan queue:retry 1
執行所有錯誤php artisan queue:retry all
刪除錯誤ID為4的記錄 php artisan queue:forget failed 4
刪除所有錯誤 php artisan queue:forget flush
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的laravel 队列queue的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: laravel debug,http模式
- 下一篇: 在1--2015这2015个自然数中,至