2010-11-02 103 views
5

我想实现我的网站像Facebook使用小聊天功能。我使用Html,PHP,JQuery和Apache。我在使用JMS进行一些实践之前做出了一些事情,但我无法弄清楚如何使用PHP将消息发送到JMS服务器?如何从PHP连接Jms?

对于JMS我使用了Weblogic。

回答

10

您有几个选项。让我们按照最坏到最坏的顺序进行处理。

首先是Quercus,这是一个Java中的PHP实现。在Quercus中运行的PHP代码可以实例化Java类并调用它们的方法,就像它们是PHP对象一样。您可以像使用Java一样使用JMS来工作。我没有这方面的经验。

其次是the PHP/Java Bridge。工作起来要复杂一点,但它在代码方面的效果与Quercus相同。您可以直接使用任何旧的Java API。我有这方面的经验,并不愉快。在相应的Apache + PHP子代退出后,Java进程最终处于僵尸状态。我们最终必须编写一个cron脚本来每晚清理所有正在运行的Java进程,否则服务器最终会耗尽可用内存。

第三个可能会看到不同的JMS提供者,如ActiveMQ。为什么?由于ActiveMQ支持许多消息传递API,包括Stomp,这是一种语言不可知的消息传递API,它恰好有a PHP extension。 Weblogic可能会说Stomp,但我无法确定是否是这种情况。唯一的Google搜索结果为Weblogic + ActiveMQ integration

四将不会考虑JMS。 JMS是一个Java解决方案。 PHP不是Java。有很多消息队列系统可以很好地与PHP配合使用。 ActiveMQ只是一个例子。我个人比较喜欢Gearman。 Gearman最初设计用于执行分片远程过程调用,但它对于简单的消息传递同样适用,并具有a PHP extension以及大多数其他阳光下语言的绑定。

2

只给其他两个选项:OpenMQ (using HTTP)PHPMQ

(我的两个关于接受的答案美分) 伟大的答案,一个狡辩:Gearman的是伟大的远程过程调用,但作为消息传递,JMS是更强大(持久性等)。以某种方式瞄准JMS将是我的建议。

+0

你的答案似乎是*存根*。请提供[更实质性的详细信息](http://meta.stackexchange.com/a/72002/141525),而不是只发布链接。 – animuson 2011-12-11 21:48:21

+1

我只是试图提供未被接受的答案中列出的其他选项... – PhilGA 2011-12-13 04:47:09