php - 使用 Angular 和 laravel 停止导入大量记录
问题描述
我正在开发一个带有角度的服务,它将一个包含大量对象的数组发送到一个带有 laravel 的服务器以插入或更新。当我发送 3000 或 5000 条记录时,服务正常工作,但当记录超过 5000 条时,就会发生奇怪的事情。
我有一个在服务器上运行 redis 的 websocket,为进度条提供功能,指示导入记录的进度。当有很多记录时,重新执行服务器上的过程。已经插入或更新的记录再次执行相同的过程。我知道这是因为在数据库中我看到了自动增量 ID、插入或更新注册表的时间和日期。
我第一个表明该过程正在重复的迹象是进度条正在重新启动。好像这不再有问题一样,在第二次意外执行过程中,http 请求结束并返回 ERR_empty_response。
在开始插入或更新过程之前,我打开一个事务,并且只有在该过程成功运行时才执行提交。显然,如果它不运行回滚
你知道它可能是什么吗?
我的服务器运行环境是nginx,Laravel 5.8 (php)。使用该服务的应用程序是使用 Angular 9 开发的
解决方案
我怀疑正在发生的事情是您的工作超时并自动重新启动,因为 Laravel“认为”它失败了,因为它没有返回成功的响应。
我建议你把你的大工作分成更小的工作。这意味着您的“大”工作会收到所有这些请求,但工作本身会创建 5000 个小工作,这些工作会单独处理每个工作。所以大作业会立即返回成功响应,Redis 会尽可能处理每个小作业。
推荐阅读
- docker - 使用 Docker 收到警告
- python - Heroku:如何在部署时自动启动 Python 应用程序?
- excel - 将一行中以, 开头的所有单元格插入不同的行但已压缩
- java - 在特定格式的两个字符串之间添加逗号分隔符
- antlr4 - ANTLR4 两个看似等效的语法中的不同优先级
- task - 如何计算 openMP 程序创建的任务数。?
- javascript - 为什么我的 vue.js 组件的属性未定义?
- php - 为什么传递给 PHP 的 cookie 或数据字符串中缺少“+”字符,我该如何纠正这个问题
- python-3.x - 没有发送任何内容时Python3 http请求关闭连接
- elasticsearch - 基数错误 [弹性搜索]