如何在(可能不同的)PHP脚本的不同实例之间实现实时消息传递


How does one achieve realtime messaging between different instances of (perhaps different) PHP scripts?

我正在努力使用事件流和HTML5 SSE客户端为客户端提供实时事件。

但我的一些活动实际上来自其他客户的表格提交。

尽快检测这些表单提交(以便将它们附加到事件流脚本)的最佳方法是什么(在它们发生后)?

所以从本质上讲,我需要在不同客户端实例化的不同脚本的多个实例之间进行实时跨脚本消息传递,类似于 JS 中的 X-doc 消息传递,但用于 PHP。

我能想到的最好的办法是反复轮询/tmp子目录以获取通知文件,这是一个糟糕的解决方案。

通常你可以使用MYSQL来扮演你所说的tmp dir的角色。 这更便携,因为它们不必在同一台服务器上执行此操作,并且数据是分开的。 但是,脚本必须手动检查 mysql 位置,以查看另一个是否已解决此问题。 另一种选择是打开套接字并实时来回写入,或者使用一些预构建的工具来实现此目的,我很确定可能存在。

如果您希望接近

实时地触发事件,则需要同步处理它们 - 这意味着运行守护程序。实现可以在客户端连接之间同步数据的守护程序的最简单方法是使用基于事件的服务器。这里有一个使用 php 的后者的很好的实现 - 有很多关于如何在交互上守护 PHP 进程的例子。然后只需从您的 PHP 代码打开与服务器的阻塞连接/通过彗星访问它。