首页 文章

如何使用PHP集成AWS SWF,以便可以从用户界面进行管理?

提问于
浏览
1

我正在使用LAMP构建一个CMS,允许管理员将MP4上传到Amazon S3 Bucket,使用Elastic Transcoder将其转换几次,并更新本地数据库,以便使用Cloud Front交付它们 .

现在每个步骤都按预期工作,并且一个简单的SWF工作流程将它连接起来(只要我从命令行启动启动器,决策器和活动工作器,就像我在各处的示例中看到的那样) .

但是,我正在努力通过用户界面连接各个部分:

  • 当用户开始上传时,启动工作流并使用 pcntl_exec 启动决策者和活动工作者是正确的方法吗?任何替代品?

  • 活动工作人员和决策者完成每项任务的执行,因此他们必须再次启动以进行下一个决策或活动,工作流程启动器是否每次都负责启动工作人员或者我错过了什么?

  • 提供 1.2. 正朝着正确的方向前进,在UI中实现反馈应该很简单,使用AJAX调用来检查数据库中记录的状态,这将在每个步骤中更新 . 否则,有什么更好的方法吗?

EDIT: 在第2点,有人可能会觉得这很有用:

对活动工作程序进行编程,以便在完成手头任务后轮询其他活动任务 . 这将创建一个循环,活动工作人员不断轮询并完成任务 . 但是,在决策者安排活动任务之前,这些民意调查超时没有任务,你的 Worker 只是继续轮询 .

如果没有可用的决策任务,Amazon SWF会保持连接打开最多60秒,并在任务可用时立即返回任务 . 如果没有可用的任务,Amazon SWF将返回一个空响应[...]如果收到空响应,请确保对您的决策程序进行编程以轮询其他任务 .

1 回答

  • 1

    我建议永久地独立于Web服务器进程运行活动和决策工作者 . 您可以将它们作为守护进程启动 . 他们应该循环轮询新任务并根据您的逻辑处理它们 . 因此在任务执行完成后无需再次启动它们 .

    工作流实例从Web服务器进程启动,因为启动它们是一个相对快速的调用,它不等待工作流程执行完成 .

    在UI中实现反馈通常是通过Web服务器代码轮询特殊活动类型(如“UIFeedback”)来完成的 . 当工作流需要通知UI时,它会调度此活动,并将其传递给Web服务器,Web服务器将活动输入数据转发给AJAX代码 .

相关问题