mcpField
L
laravel:task-scheduling

laravel:task-scheduling

github.com/jpcaparas開発157125 回インストール17 週間前に更新
リポジトリ

laravel:task-scheduling について

Laravel の開発者向けに、環境をまたぐ定期タスクの設定方法を案内するスキルです。重複実行の防止、複数ノードでの実行、ライフサイクル処理を扱います。

主な機能

  1. 01指定時刻でのコマンド実行
  2. 02タスクの重複実行防止
  3. 03複数サーバーでの実行調整
  4. 04バックグラウンドでのジョブ実行
  5. 05コールバックのグループ化とシグナル時のロック解除

活用シーン

  1. 01日次レポートコマンドのスケジュール
  2. 02長時間タスクの重複実行防止
  3. 03複数ノードでの定期タスク実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jpcaparas/superpowers-laravel --skill laravel:task-scheduling

インストール後、Claude Code で/laravel:task-schedulingを入力して読み込まれたか確認します。

詳細

タスクスケジューリング

環境を問わず、スケジュールされたタスクを予測可能な形で実行します。

コマンド

// app/Console/Kernel.php
protected function schedule(Schedule $schedule): void
{
    $schedule->command('reports:daily')
        ->dailyAt('01:00')
        ->withoutOverlapping()
        ->onOneServer()
        ->runInBackground()
        ->evenInMaintenanceMode();
}

# Run the scheduler from cron
* * * * * cd /var/www/app && php artisan schedule:run >> /dev/null 2>&1

パターン

  • 長時間実行されるコマンドは withoutOverlapping() で保護します
  • 複数のノードで実行する場合は onOneServer() を使用します
  • 可視性を高めるためにログやメトリクスを出力し、失敗時の通知も検討します
  • リスクの高いジョブは、config/env で機能フラグを設定します

Laravel 13+

# Group lifecycle callbacks
Schedule::group([
    Command::command('reports:generate'),
    Command::command('emails:send'),
])->before(fn () => /* setup */)->after(fn () => /* teardown */);

# Release overlap locks on SIGTERM/SIGINT for fast redeploys
$schedule->command('reports:generate')->withoutOverlapping(releaseOnSignal: true);

# Inspect what runs per environment
sail artisan schedule:list --environment=production   # or: php artisan schedule:list --environment=production

コメント