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

Passing data between different PHP instances

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

您需要某种进程间通信。

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

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

如果您有一个数据库,例如 MySQL,您可以通过共享 table.

拥有两个进程 "communicate"

几个选项:

  1. 两个进程之间的 HTTP

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

  2. Unix 套接字文件

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

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

  3. TCP 套接字

    这应该有效。但是和第一个选项一样笨重。

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

Node.js

我不确定你是否用过它,但 node.js 就是为这类任务而生的。并允许许多 php 不允许的功能。

https://nodejs.org/en/

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

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