0

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

<?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';
});
4

3 回答 3

0

您需要某种进程间通信。

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

您也可以通过利用外部应用程序(例如一些 *MQ 或 Redis)来做到这一点。

如果您有 MySQL 等数据库,则可以让两个进程通过共享表“通信”。

于 2017-01-06T21:39:35.000 回答
0

几个选项:

  1. 两个进程之间的 HTTP

    就像你说的这有点乱,还不错,它会很快,但有点乱。

  2. Unix 套接字文件

    唯一的问题是reactphp目前不适用于 unix 套接字。

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

  3. TCP 套接字

    这应该有效。但就像第一个选项一样笨重。

老实说,这听起来像是你达到了 php 的极限。

节点.js

我不确定您是否曾经使用过它,但它node.js是为此类任务而设计的。并且允许很多php没有的功能。

https://nodejs.org/en/

于 2017-01-06T21:52:29.790 回答
0

如前所述LSemi,您可以使用共享内存来完成,或者基本上您已经有了一个 WebSocket 服务器 为什么您不使用 PHP WebSocket 客户端库获得响应?

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

于 2017-01-06T21:55:51.257 回答