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()
  • 输出日志/指标以便查看;考虑在失败时发送通知
  • 通过配置/环境变量为有风险的作业启用功能标志

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

评论

支持 Markdown