推荐的方法让PHP与同一服务器上的过程进行通信

Recommended way to let PHP communicate with a process on the same server

本文关键字:服务器 过程 通信 方法 PHP      更新时间:2023-10-16

我在C (名为" Talkto")中写了一个通信软件。现在,我想通过PHP中的网站访问此程序。问题是,网络码必须与程序进行交互。因此,启动程序并在程序停止之后查看结果。例如您可以使用参数开始我的过程:

talkto.exe enum receiver

该程序将广播UDP软件包并等待答案。不幸的是,这将阻止PHP脚本直到程序退出。另外,Talkto将向接收器建立一种会话,这仅在运行期间有效。一旦枚举的一部分,接收者就可以改变自己的状态并宣布其说话。我对PHP知之甚少。我需要的是一种网站,显示了接收器并进行更新,如果状态更改。我完全控制了Talkto,因此可以使用STDIO,插座或管道。Web服务器是Apache。该程序将/必须在同一台计算机上运行。安全是一个问题。

您是否考虑过使用消息队列(我认为MQ-Suffix会做任何事情,ActiveMQ,RabbitMQ,Zeromq),您的两个不同的过程可以通过MQ

传递的消息进行通信

链接2个过程的另一个选项是使用redis(pub/sub)

关于以后的问题,PHP的性质是阻止代码。有一种简单的方法可以解决此问题,即将外部队列用于PHP(我正在使用此https://github.com/chrisboulton/php-resque)

基本上,您的PHP脚本将将某些任务推入队列,然后最终将执行任务,这将阻止代码由于长期执行而被阻止