我需要与外部程序进行如下交互:
- 在提交表单时,控制器启动外部程序
- 程序将通过短信发送代码并等待验证
- 控制器返回一个带有表单的新视图以请求此代码
- 在提交表单中,控制器向程序提供代码
主要问题是该程序在阻塞模式下运行(它将等待代码并仅在验证后返回(,因此我无法使用symfony/process从控制器直接执行它。
相反,我在第一个表单提交时启动的队列作业中执行它(这是正确的做法吗?(,但我找不到如何将第二个表单提交获得的代码发送到这个正在运行的作业。
有没有一种方法可以将信息从控制器发送到已经运行的作业?
谢谢。
我会稍微更改一下您的工作流程。
- 在提交表单上,控制器调度一个作业,该作业启动外部程序
- 程序将通过短信发送代码并等待验证
- 当第2步的作业完成(验证完成(时,它将触发Notification,其中将包含指向表单的新视图的链接
- 在提交表单中,控制器向程序提供代码
简单的一点是不要阻止请求,让作业来处理它,正如您在最初的问题中指出的那样。表单无论如何都可以构建,实现echo服务器,它将帮助您通过websocket传递消息。
有没有办法将信息从控制器发送到已经运行的作业?
否。