【发布时间】:2020-03-01 09:49:01
【问题描述】:
我正在开发一个后端 API,它必须在使用发送的动态数据创建 PDF 文档之前将数据保存到数据库中。将更新模型的业务逻辑放在 Laravel Job 中是否是最佳实践,还是使用 Laravel Job 或 Event 来创建和压缩 PDF 文档会更好
【问题讨论】:
我正在开发一个后端 API,它必须在使用发送的动态数据创建 PDF 文档之前将数据保存到数据库中。将更新模型的业务逻辑放在 Laravel Job 中是否是最佳实践,还是使用 Laravel Job 或 Event 来创建和压缩 PDF 文档会更好
【问题讨论】:
队列作业用于异步处理通常会阻止脚本执行的任务。例如,从 SMTP 服务器发送电子邮件:请求/响应在负载过重的情况下可能需要长达 5 秒,因此脚本会在这段时间内暂停,这对最终用户不利。
出现的问题是:您打算如何处理该 PDF?您是要将其存储在磁盘上、将其发送到电子邮件,还是将其发送回浏览器,按照相同的请求?
对于案例 1 和 2,根据该 PDF 中存储的信息量,我可能会为每个文档分派一个作业进行处理。最终,如果您愿意,您可以触发一个事件并设置一个侦听器来分派任务——这在概念上更好,但需要更多代码来维护。
对于案例 3,我也会忘记工作和事件。这是一项同步任务,按程序处理是更好的选择。
【讨论】: