4

是否可以让一个 PHP 文件在另一个 PHP 文件上向特定用户发送“消息”?

请注意,“消息”需要能够被已经运行的 PHP 文件接收,因此简单地调用其他文件并没有什么不同。下图演示了我想要做的事情:

在此处输入图像描述

在此示例中,用户 1 调用“send.php”,随后将消息发送到用户 1、2 和 4 的“receive.php”实例。这可能实现吗?

附加信息

我无法将消息记录在文件或数据库之类的中心位置,因为我最终会每 100 毫秒查询一次消息,这可能会使数据库/文件系统过载。我需要它是即时的。

此外,我不能使用会话或 cookie,因为如前所述,消息需要发送给多个用户。最后,接收的 PHP 文件在用户离开页面之前不会终止(它实际上是一个 HTML5eventsource文件)。

4

4 回答 4

0

好的,可能有更轻量级的方法,但尝试使用具有发布-订阅功能的消息代理(在JMS世界中称为主题)。它们专门用于将大量消息从服务器快速可靠地传输到客户端。

为此类设置创建测试系统的一种简单方法是使用支持STOMP的消息代理(请参阅此处以获取可用解决方案的列表)并将其与 PHP STOMP 客户端(同一页面上提供的列表)结合使用。

请务必阅读有关持久订阅的评论:由于您的 PHP 脚本很可能不会在发送消息的确切时间运行,因此您需要模拟持久订阅的功能。我不知道上面提到的页面上描述的所有代理,但是ActiveMQ知道,并且它已经存在了相当长的一段时间,并且拥有非常好的声誉。

于 2013-04-08T22:49:28.017 回答
0

您可以使用会话数据库来跨页面保存数据。

于 2013-04-08T22:36:18.070 回答
0

附加信息:我无法将消息记录在文件或数据库等中心位置,因为我最终会每 100 毫秒查询一次消息,这可能会使数据库/文件系统过载。我需要它是即时的。

这可以做到,但这不是最佳实践。您可以为每条消息创建一个单独的文件。这是非常糟糕的做法。

就集中式数据库的问题而言,您永远不会知道。这或许能应付你的要求,试一试就知道了。

没有程序员在第一次尝试时就做好了一切。他们尝试了一些新的东西,但犯了一个错误……每个人在寻找应用程序的最佳方法时都会犯错误。

于 2013-04-08T22:36:31.633 回答
-1

PHP 不能那样工作。它运行脚本并终止。您需要查找会话或使用数据库。如果您想花哨,请使用 jQuery 和 Ajax。

于 2013-04-08T22:34:15.857 回答