Php 拉威尔重复任务

Php 拉威尔重复任务,php,laravel,pusher,Php,Laravel,Pusher,我需要一个任务: 可以打开或关闭(仅适用于管理员/授权用户) 它在一个恒定的循环中运行 每个循环都应该向每个用户显示一个计时器,例如60秒(使用pusher) 如果用户在20秒内连接到此任务,则应在剩余的40秒内继续此任务 我怎样才能实现这样的目标?我在考虑事件、队列和任务的组合,但我不确定如何使用它们来创建任务。听起来您可以使用调度程序来控制任务的频率 然后,您可以使用真理约束来检查它是否应该这样运行: $schedule->command('your:task')->whe

我需要一个任务:

  • 可以打开或关闭(仅适用于管理员/授权用户)
  • 它在一个恒定的循环中运行
  • 每个循环都应该向每个用户显示一个计时器,例如60秒(使用pusher)
  • 如果用户在20秒内连接到此任务,则应在剩余的40秒内继续此任务

我怎样才能实现这样的目标?我在考虑事件、队列和任务的组合,但我不确定如何使用它们来创建任务。

听起来您可以使用调度程序来控制任务的频率

然后,您可以使用真理约束来检查它是否应该这样运行:

$schedule->command('your:task')->when(function () {
    // Do a config check / DB check / Cache check here
    return true;
});
我建议在缓存层之类的地方设置一个值,而不是访问文件或使用关系数据库。这是一项每秒钟都会运行的任务,因此您不需要任何资源密集型的任务


然后,您可以使用命令设置正在检查的缓存中的值。此命令只能由您授予权限的用户运行。

任务的范围是什么?一个任务是否由多个用户控制?还是一个给定用户的单个任务?@Spholt这是一个由多个用户控制的任务。谢谢,遗憾的是,它必须不断运行。我的解决方案是使用队列/作业()。当作业完成时,我会在handle()方法的末尾分派相同的作业,然后它会自己排队。我使用cron作业监视队列。