Laravelで指定した時間後に実行キューを実行する方法


  1. キュージョブの作成 まず、遅延実行したい処理を含むキュージョブを作成します。キュージョブは、php artisan make:jobコマンドを使用して生成できます。以下は例です。
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;
class MyDelayedJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public function handle()
    {
        // 遅延実行したい処理をここに記述する
    }
}
  1. キューのディスパッチ キュージョブを実行するためには、キューにディスパッチする必要があります。以下のコードを使用して、指定した時間後にキューをディスパッチします。
use App\Jobs\MyDelayedJob;
use Illuminate\Support\Facades\Queue;
$delayInMinutes = 5; // 実行までの遅延時間(分)
$job = new MyDelayedJob();
Queue::later(now()->addMinutes($delayInMinutes), $job);

上記の例では、$delayInMinutes変数に5を指定しています。これにより、ジョブは現在の時刻から5分後に実行されます。必要に応じて、遅延時間を調整してください。

これで、指定した時間後にキューが実行されるようになりました。遅延実行されるジョブは、キューワーカーが実行するまで待機状態になります。