在后台实施数据库密集型操作 laravel

Impelement database intense operation in background laravel

问题

我们正在开发 API Laravel。
我的应用程序需要每隔 20 分钟左右在后台从另一台服务器(大量数据)获取数据,然后处理这些数据(基本上在 for 循环中比较它们)并将其全部写入数据库(创建或创建数千行)已更新)。

当我的应用程序使用这些数据为用户提供服务时,此操作需要无限执行;并且有移动和网络应用程序连接到此应用程序。
此进程不会更改或停止,我不知道是否有办法在不创建命令计划 (cron) 的情况下执行此操作

问题

考虑到这些因素,您将如何实施:
这个应用程序从一开始就有很多用户。
这些正在处理的数据随着时间的推移变得越来越大
这是一个数据库密集型操作(更新和写入)
用户正在动态添加一些作业,例如图片上传或短信发送,所以这个过程需要以高优先级完成,它会忽略没有人工实例化的其他进程

  1. 为每个 API 调用创建作业以接收数据(查询作业)。

  2. 在数据库查询构建器上使用多维数组和块存储这些数据

  3. 创建用于处理将在查询作业中分派的数据的作业(不知道这是否是个好主意)或者使用链方法。

  4. 将这些作业放入单独的队列中,如 api_calls

  5. 创建类似 server:update 的命令,用于调度初始作业(查询作业)

  6. 查询作业将 运行 每 30 分钟(计划)并手动调度处理作业

  7. 使用主管监控队列,也许this

  8. 部署和运行server:update