ピックアップ

Laravelのworkerに関してJob作成して試した件の個人的なメモ。

Laravelで、

queueを使っていたが、

使い方のみ調べて、

設定して運用していたので、

色々と自分なりの整理や、

より理解できるように試したり、

聞いたりしながら、

自分なりのメモを残してる。

LaravelのWorker / Queueに関してのメモ

色々と、

WorkerやQueueについて、

試しながら、

調べたことで理解した部分や、

個人的になるほどとか、

気になった点のメモは、

こちらの方にもメモしてる。

Job作成

LaravelにJob作成

php artisan make:job TestJob
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;

class TestJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function handle()
    {
        Log::info("TestJob executed at " . now());
        sleep(10);
    }
}

Jobを実行する

Route::get('/test-sync', function () {
    dispatch(new \App\Jobs\TestJob());
    return 'Job dispatched!';
});

を準備して、

curl http://localhost:8000/test-sync
curl http://localhost:8000/test-sync
curl http://localhost:8000/test-sync
curl http://localhost:8000/test-sync

呼び出して

キューに追加。

Redisを確認

こちら、

Redisを導入した環境で、

redis-cli

でクライアントに入って、

ZRANGE laravel_horizon:pending_jobs 0 -1

を確認すると、

127.0.0.1:6379> ZRANGE laravel_horizon:pending_jobs 0 -1
1) "66650e15-0c04-4f0e-ac72-76c1926018e2"
2) "10f23faa-362f-463e-ba55-97fa5557e04e"
3) "839680cb-26ea-4862-9e38-123bd8872797"
4) "6baf89c2-e9df-4874-b7ee-0637c6c6e51f"

という感じで確認できる。

Queueに溜まったJobを実行する

溜まったJobを実行するので、

を行う。

これをすると、

溜まっているJobが1つずつ実行されて、

Redisクライアントで確認すると、

ZRANGE laravel_horizon:pending_jobs 0 -1

結果が、

127.0.0.1:6379> ZRANGE laravel_horizon:pending_jobs 0 -1
(empty array)

となるので、

うまく処理できてる。

概念メモ

[ Horizon ]  ← 全体の管理者(ダッシュボード付き)
     │
     ├─ [ Supervisor ]  ← worker の設定と監督役
     │         ├─ worker #1
     │         ├─ worker #2
     │         └─ worker #3
     │
     └─(他にも supervisor を作れる)

ピックアップ

おすすめ書籍

コメント一覧

コメントはまだありません。

コメント送信

コメントを残す

広告

おすすめ記事