Laravel 重复任务
Laravel Repeating Task
我需要一个任务:
- 可以打开或关闭(仅适用于 admins/authorized 用户)
- 它在一个恒定的循环中运行
- 应该在每个循环中向每个用户显示一个计时器,例如 60 秒(使用推送器)
- 如果用户在 20 秒后连接到此任务,它应该从剩余的 40 秒开始继续
我怎样才能实现这样的目标?我在考虑事件、队列和任务的组合,但我不确定应该如何使用它们来创建我的任务。
听起来您可以使用调度程序来控制任务的频率
https://laravel.com/docs/7.x/scheduling
然后您可以使用真值约束来检查它是否应该 运行 像这样:
$schedule->command('your:task')->when(function () {
// Do a config check / DB check / Cache check here
return true;
});
我建议在缓存层之类的东西中设置一个值,而不是访问文件或使用关系数据库。这是一项每秒 运行 的任务,因此您不想要任何可能占用太多资源的东西!
然后您可以使用命令来设置您正在检查的缓存中的值。此命令只能由您授予权限的用户 运行 使用。
我需要一个任务:
- 可以打开或关闭(仅适用于 admins/authorized 用户)
- 它在一个恒定的循环中运行
- 应该在每个循环中向每个用户显示一个计时器,例如 60 秒(使用推送器)
- 如果用户在 20 秒后连接到此任务,它应该从剩余的 40 秒开始继续
我怎样才能实现这样的目标?我在考虑事件、队列和任务的组合,但我不确定应该如何使用它们来创建我的任务。
听起来您可以使用调度程序来控制任务的频率
https://laravel.com/docs/7.x/scheduling
然后您可以使用真值约束来检查它是否应该 运行 像这样:
$schedule->command('your:task')->when(function () {
// Do a config check / DB check / Cache check here
return true;
});
我建议在缓存层之类的东西中设置一个值,而不是访问文件或使用关系数据库。这是一项每秒 运行 的任务,因此您不想要任何可能占用太多资源的东西!
然后您可以使用命令来设置您正在检查的缓存中的值。此命令只能由您授予权限的用户 运行 使用。