如何解决Laravel重复任务
我需要一项任务:
- 可以打开或关闭(仅适用于管理员/授权用户)
- 以恒定循环运行
- 应该在每个循环中向每个用户显示一个计时器,例如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;
});
我建议在诸如缓存层之类的地方设置一个值,而不是访问文件或使用关系数据库。该任务将每秒运行一次,因此您不需要任何可能占用大量资源的东西!
然后可以使用命令来设置要检查的缓存中的值。此命令只能由您授予权限的用户运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。