在不同的PHP实例之间传递数据

时间:2017-01-06 21:23:18

标签: php asynchronous communication reactphp

index.php由Apache解析。它需要将一些数据传递给另一个恰好是reactphp循环的PHP实例。如何才能最好地完成?这两个脚本都在同一台机器上运行。

<?php
//index.php
$status=sendDataToOtherInstance('hello'); //blocking function which returns true/false

<?php

//reactphp loop

$foo->on('connection', function ($data){
    echo($data);
    return $data==='hello';
});

3 个答案:

答案 0 :(得分:0)

您需要某种进程间通信。

你可以用IPC(当然)来做;使用共享内存。或者性能稍差,但恕我直言更好的可管理性,使用RAM磁盘或临时文件系统上的临时文件。当然,IPC还使您能够等待信号资源,这可能会变得方便并提高响应能力(您可以通过在reactphp过程中打开套接字或完整的HTTP服务器来实现相同的目标)。

您也可以通过利用外部应用程序(例如某些* MQ或Redis)来实现此目的。

如果你有一个像MySQL这样的数据库,你可以拥有两个进程&#34;通信&#34;通过共享表。

答案 1 :(得分:0)

几个选项:

  1. 两个进程之间的HTTP

    就像你说这有点乱,不是太糟糕,它会很快,但有点凌乱。

  2. Unix套接字文件

    唯一的问题是reactphp在一分钟内无法使用unix套接字。

    更多信息:https://github.com/reactphp/socket/pull/17

  3. TCP套接字

    这应该有效。但就像第一种选择一样笨重。

  4. 说实话,这听起来像是达到了php的极限。

    <强> Node.js的

    我不确定你是否曾经使用它,但node.js是为了这类任务而做的。并允许PHP没有很多功能。

    https://nodejs.org/en/

答案 2 :(得分:0)

正如LSemi所说你可以使用共享内存来实现,或者基本上你已经有了一个WebSocket服务器为什么不通过PHP WebSocket客户端库获得响应?

https://github.com/Textalk/websocket-php