Laravel 与外部程序的交互

问题描述

我需要与外部程序进行如下交互:

  • 在提交表单时,控制器启动外部程序
  • 程序会通过短信发送验证码并等待验证
  • 控制器返回一个带有表单的新视图以请求此代码
  • 在提交表单时,控制器向程序提供代码

主要问题是这个程序在阻塞模式下运行(它会等待代码并在验证后返回),因此我不能直接从控制器使用 symfony/process 执行它。

相反,我在第一个表单提交时启动的队列作业中执行它(这是正确的做法吗?),但我不知道如何将第二个获得的代码发送到这个正在运行的作业表单提交。

有没有办法将信息从控制器发送到已经运行的作业?

谢谢。

解决方法

我会稍微改变你的工作流程。

  1. 在提交表单时,控制器分派一个作业,启动外部程序
  2. 程序会通过短信发送验证码并等待验证
  3. 当第 2 步的作业完成(验证完成)时,它会触发通知,其中包含指向带有表单的新视图的链接。
  4. 在提交表单时,控制器向程序提供代码

简单的一点是不要阻止请求,让工作处理它,正如您在原始问题中指出的那样。 无论如何都可以构建表单,实现回声服务器将帮助您通过 websocket 传递消息。

有没有办法将信息从控制器发送到已经运行的作业?

没有