将消息发送到另一个PHP文件

时间:2013-04-08 22:30:37

标签: php

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

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

Enter image description here

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

其他信息

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

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

4 个答案:

答案 0 :(得分:0)

您可以使用sessionsdatabase

在网页中保留数据

答案 1 :(得分:0)

  

其他信息:我无法在中央位置记录消息   像文件或数据库,因为我最终会查询消息   大约每100毫秒一次,这可能会超载   数据库/文件系统。我需要它是瞬间的。

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

就您的集中式数据库问题而言,您永远不会知道。这可能能够应对您的要求,只需尝试并找出答案。

没有程序员在第一次尝试时就把一切都做对了。他们尝试了一些新的东西,并犯了一个错误......每个人都在找到应用程序的最佳方法时犯了错误。

答案 2 :(得分:0)

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

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

请务必阅读this remark concerning durable subscriptions:由于您的PHP脚本很可能不会在发送邮件的确切时间运行,因此您需要使用模拟持久订阅的功能。我不知道上面提到的页面上描述的所有经纪人,但是ActiveMQ确实如此,而且它已经存在了很长一段时间,并且有很好的声誉。

答案 3 :(得分:-1)

PHP无法正常工作。它运行脚本并终止。您需要查找会话或使用数据库。如果你想获得想象力,请使用jQuery和Ajax。