在后台实施数据库密集型操作 laravel
Impelement database intense operation in background laravel
问题
我们正在开发 API Laravel。
我的应用程序需要每隔 20 分钟左右在后台从另一台服务器(大量数据)获取数据,然后处理这些数据(基本上在 for 循环中比较它们)并将其全部写入数据库(创建或创建数千行)已更新)。
当我的应用程序使用这些数据为用户提供服务时,此操作需要无限执行;并且有移动和网络应用程序连接到此应用程序。
此进程不会更改或停止,我不知道是否有办法在不创建命令计划 (cron) 的情况下执行此操作
问题
考虑到这些因素,您将如何实施:
这个应用程序从一开始就有很多用户。
这些正在处理的数据随着时间的推移变得越来越大
这是一个数据库密集型操作(更新和写入)
用户正在动态添加一些作业,例如图片上传或短信发送,所以这个过程需要以高优先级完成,它会忽略没有人工实例化的其他进程
为每个 API 调用创建作业以接收数据(查询作业)。
在数据库查询构建器上使用多维数组和块存储这些数据
创建用于处理将在查询作业中分派的数据的作业(不知道这是否是个好主意)或者使用链方法。
将这些作业放入单独的队列中,如 api_calls
创建类似 server:update
的命令,用于调度初始作业(查询作业)
查询作业将 运行 每 30 分钟(计划)并手动调度处理作业
使用主管监控队列,也许this
部署和运行server:update
问题
我们正在开发 API Laravel。
我的应用程序需要每隔 20 分钟左右在后台从另一台服务器(大量数据)获取数据,然后处理这些数据(基本上在 for 循环中比较它们)并将其全部写入数据库(创建或创建数千行)已更新)。
当我的应用程序使用这些数据为用户提供服务时,此操作需要无限执行;并且有移动和网络应用程序连接到此应用程序。
此进程不会更改或停止,我不知道是否有办法在不创建命令计划 (cron) 的情况下执行此操作
问题
考虑到这些因素,您将如何实施:
这个应用程序从一开始就有很多用户。
这些正在处理的数据随着时间的推移变得越来越大
这是一个数据库密集型操作(更新和写入)
用户正在动态添加一些作业,例如图片上传或短信发送,所以这个过程需要以高优先级完成,它会忽略没有人工实例化的其他进程
为每个 API 调用创建作业以接收数据(查询作业)。
在数据库查询构建器上使用多维数组和块存储这些数据
创建用于处理将在查询作业中分派的数据的作业(不知道这是否是个好主意)或者使用链方法。
将这些作业放入单独的队列中,如
api_calls
创建类似
server:update
的命令,用于调度初始作业(查询作业)查询作业将 运行 每 30 分钟(计划)并手动调度处理作业
使用主管监控队列,也许this
部署和运行
server:update