这更多的是一个架构问题。如何在Laravel中实现对长时间运行的导入的跟踪
我正要编写一堆Import实现。他们都希望有一些参数(即CSV文件),然后在一段时间内安静地继续。在我之前的项目中,我曾使用“shell_exec()”命令在后台发送这些导入,并在浏览器中监视日志文件以报告状态。我现在最大的希望是,拉拉维尔接手这里精简所有这些体力劳动。
现在,我的问题是关于背后的建议类架构。
我的一堆进口需求是:
- 每个导入需要作为后台进程运行在浏览器中(和日志文件)
- 开始进口
- 监测进展情况控制台和通过HTTP
现在我打算使用“Job”在L5.1中实现基本导入。我正在努力的是在浏览器中实现某种“进度条”和监视(最近的)“日志消息”。我不需要通过套接字进行真正的“实时”视图,但应该可以定期更新正在运行的导入的进度视图。
- 有没有人提示,如何实现这个进度的东西?
我迄今为止的做法: 阅读CSV文件,把每行一个队列元素和监控队列。日志消息可能会触发填充最近日志消息堆栈的事件。 (我可能会遇到竞争条件,因为有些行可能依赖于其他行的上一个处理)
是的,应该这样做。有了我的问题,我也很喜欢Laravel带来的那些东西,或者在这里推荐什么样的设计模式。 – patriziotomato
@ redless81我不确定你应该这样看待事情;)总是选择最简单的解决方案。模式是为了使复杂的事情更简单。我不喜欢5.1中的Laravel Jobs。它们对我来说似乎是假的。 –
我同意并且不同意;)我需要导入大约50 MB的CSV数据以将其分布到多个表格中。导入过程可能需要几个小时。我认为我需要考虑诸如可伸缩性等方面。另外,我也希望充分利用框架提供的架构,因为它为其他开发人员带来了某种标准,使其更易于测试。不过,我同意你应该防止使用模式,如果你不需要它们。 – patriziotomato