我正在尝试建立一个与Laravel中的许多工作人员同步通信的API系统。我使用Laravel 5.4,如果可能的话,想尽可能使用它的功能,而不需要太多的插件。
我想到的是两台服务器。第一个带有Laravel实例 - 让我们称之为APP - 接收和回复用户的请求。第二个运行不同的工作者,每个工作者都是Laravel实例。这就是我看到工作流程的方式:
我的第一个想法是使用队列和beanstalkd。问题是这一切似乎都是异步工作的。 APP有没有办法等待其中一个工人的结果?
经过一番研究,我偶然发现了Guzzle。这会是一种方法吗?编辑:项目的一些额外信息。 我在谈论Restful API。例如。用户以" https://our.domain/article/1"的形式发送请求以及它们在标头中的API令牌。用户收到的是一个JSON格式的字符串,如{" id":1," name":" article_name"等}。
使用双方的原因是双重的。一方面是使用不同的工人。另一方面,我们希望API的所有逻辑尽可能安全。当发生黑客攻击时,只有APP方会受到攻击。
也许我正在排队等等所有事情都困难重重?如果你有更好的方法来达到同样的目的,那当然也会有所帮助。
答案 0 :(得分:1)
我知道您的问题是如何同步运行此问题,我认为您遇到的问题是您无法在工作完成后更新第一台服务器。你可以通过广播实现这一目标。
我在我们的应用程序中做了类似上传的事情。我们使用Redis队列,但beanstalk将执行相同的工作。最重要的是我们使用pusher,使用用户可以订阅的套接字,它看起来很棒。
我们使用了推杆,但你可以使用redis,beanstalk和许多其他解决方案来做到这一点。阅读Laravel文档中的Event Broadcasting。