php 请求间通信,php – 如何在HTTP请求和cli类对象之间进行通信

如果我理解正确,你有(假设注明):

>通过HTTP进行通信的普通PHP Web应用程序(可能是在Apache或类似的Web服务器上)

>一个长期运行的PHP cli应用程序,通过websockets进行通信.

据推测,这两个应用程序都在不断地从Web客户端接收通信.据推测,他们也拥有自己的持久性数据存储,例如MySQL数据库或类似数据库,甚至可能共享相同的数据存储.

我将假设您需要的内容超出了每个应用程序访问持久数据存储中最新的数据(或者两个进程使用单独的数据存储),并且您实际上需要在之间进行按需通信.两个过程.

您正在使用消息队列的正确路径,但正如您所指出的那样,当您已经拥有两个完全可以正常工作的通信层时,添加第三个专用进程间通信层是不必要的复杂性.

您需要的是您的cli应用程序在需要启动与您的Web应用程序的通信时说HTTP,并且当您的Web应用程序需要启动与您的cli应用程序的通信时说出Web套接字.

这在实践中看起来很简单.

在您的cli应用程序中,只需使用cURL启动与您的Web应用程序的HTTP连接.这很简单,网上有无穷无尽的资源可以帮助你一路走来,如果你遇到困难,那么带着一个针对你的问题的新问题来这里会让你前进.您的网络应用程序中的所有这些要求如下:

>如果面向基本客户端的页面不够用,cli应用程序可以向其发送请求的适当端点

>如果需要访问Web客户端不可用的数据,请对cli应用程序进行身份验证

对于您的Web应用程序启动与cli应用程序的websocket连接,它有点复杂,因为我不知道任何专门针对websocket协议的本机PHP功能.但是,我确实发现this (extremely permissive) github project声称能够设置网络套接字服务器,并且它可以用来连接到Web应用程序进程并发送/接收数据,然后在您关闭时将其关闭’重做.它似乎仍然有一些最小的活动,您可以直接使用它或使用它作为编写您自己的websocket客户端的起点.

在这种情况下,就像在相反的情况下一样,您需要cli客户端识别和验证来自您的Web客户端的流量,以便它可以为其提供适当的数据.

如果由于某种原因这种情况对您不起作用,那么您将返回消息队列或共享数据存储(有人建议使用redis,在某些情况下可以充当混合数据存储/消息队列).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值