php - 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;
});
我建议在缓存层之类的东西中设置一个值,而不是访问文件或使用关系数据库。这是一项每秒都会运行的任务,因此您不想要任何可能过于占用资源的任务!
然后,您可以有一个命令来设置您正在检查的缓存中的值。此命令只能由您授予权限的用户运行。
推荐阅读
- c++ - 创建一个具有随机行数的二维数组。C++
- python - Python - asyncio - 协程返回错误
- react-native - React Native 中的两个 AsyncStorage 实例?
- python - 检查文件是否在桌面文件夹中 Python
- php - 如何使用 laravel 集合获取最后插入的 ID 并将其插入到第二个表中?
- python - 如果找到匹配项,如何搜索预定义的字符串并返回整行
- laravel - Laravel JetStream 获取用户头像
- python - 从条件适用的 pandas 列的 JSON 数据中提取值
- node.js - 在移动到下一行代码之前,如何让节点 js 异步等待等到进程完成?
- javascript - 循环遍历元素并同时设置 CSS 样式