1 回答
TA贡献1719条经验 获得超6个赞
有很多方法可以做到这一点,但你基本上想要的是解耦动作触发器及其执行。
只是:
从控制器中删除所有繁重的工作。您的控制器最多只应检查客户端提供的视频 ID 是否存在于 .
VideoRepository
存在?很好,那么您需要将此“工作订单”存储在某个地方。
有许多解决方案,具体取决于您已经安装的内容,您感觉更舒适的技术等。
为了简单起见,假设您有一张带有 、 和 的表,也许还有 。因此,您的控制器唯一要做的就是在此表中创建一个新记录(也许检查作业是否尚未“排队”,这种详细信息取决于您的实现)。
PendingUploads
videoId
status
createdAt
userId
然后返回(或 ,在这种情况下可能更合适
200
202
)
然后,您需要编写一个单独的进程。
很可能是您定期执行的控制台命令(使用最简单的方法)cron
在每次执行时,该进程(将具有所有逻辑,并且可能还有一个)将检查哪些作业正在等待上传,按顺序处理它们,并设置为您表示要完成的任何内容。例如,您可能必须(挂起)、(处理)和(已处理),并在脚本的每个步骤上相应地设置状态。Google_Client
PendingUploadsRepository
status
status
0
1
2
具体实现此目的的详细信息取决于您。这个问题过于宽泛和固执己见。选择一些你已经理解的东西,让你移动得更快。如果要将作业存储在 Rabbit、Redis、数据库或平面文件中,则不是特别重要。如果以 或 开头的“使用者”。cron
supervisor
Symfony有一个现成的组件,可以让你异步解耦这种消息传递(Symfony信使),这很不错。调查它是否是你的一杯茶,尽管如果你不打算在你的应用程序中将其用于其他任何事情,我会让它变得简单。
- 1 回答
- 0 关注
- 69 浏览
添加回答
举报