【发布时间】:2015-09-09 12:28:50
【问题描述】:
我正在使用 LAMP 构建一个 CMS,它允许管理员将 MP4 上传到 Amazon S3 存储桶,使用 Elastic Transcoder 对其进行多次转换,并更新本地数据库以便可以使用 Cloud Front 进行交付。
现在每个步骤都按预期工作,一个简单的 SWF 工作流将所有步骤连接起来(只要我从命令行启动启动器、决策器和活动工作器,正如我在所有示例中看到的那样)。
但是,我正在努力将各个部分与用户界面连接在一起:
- 在用户开始上传时使用
pcntl_exec启动工作流并启动决策者和活动工作者是正确的方法吗?有其他选择吗? - 活动工作者和决策者完成每项任务的执行,因此必须再次启动他们以进行下一个决策或活动,工作流启动者是否会负责每次启动工作者,还是我错过了什么?
- 如果
1.和2.正朝着正确的方向发展,在UI 中实现反馈应该很简单,使用AJAX 调用来检查数据库中记录的状态,每个步骤都会更新记录.否则,有什么更好的方法吗?
编辑:有人可能会觉得这很有用,第 2 点:
对活动工作者进行编程,以在完成手头的任务后轮询另一个活动任务。这会创建一个循环,活动工作者在该循环中不断轮询并完成任务。
不过,在决策者安排活动任务之前,这些轮询会超时且没有任务,您的工作人员只会继续轮询。
如果没有可用的决策任务,Amazon SWF 会将连接保持打开状态长达 60 秒,并在任务可用时立即返回。如果没有任务可用,Amazon SWF 会返回一个空响应 [...] 确保对您的决策程序进行编程,以便在收到空响应时轮询另一个任务。
【问题讨论】:
标签: php amazon-web-services architecture lamp amazon-swf