2011-03-08 27 views
0

快速背景。ejabberd,Rosters和mySQL

我们正在运行一个ejabberd服务器,它有一个相当大的用户库连接到它(700k +用户)。我们遇到了一个问题,名册大小太大,无法处理,因此我们决定使用Web界面,在用户登录/注销时为用户添加和删除名单条目。这种方法存在的问题是它延迟了登录,这是我们不能拥有的。为此我们的工作是将名单请求放入延迟任务表中,该表将被cron拾取并添加条目。然后我们遇到的问题是数据库中条目堆积的速度超出了处理它的时间。测试显示它不是脚本,而是来自ejabberd服务器的实际响应时间。

之后,我们决定将内部menesia DB的名单移动到mysql。通过这样做,我们可以直接从DB插入/删除名单条目,这对ejabberd服务器没有任何影响。

我已成功为用户添加和删除名单条目,并且他们已成功显示在Web界面中。

现在问题:添加了互惠名单条目后,我需要告诉用户此人在线,以便他们在网络界面中显示在线。目前,在我添加名单条目后,用户只显示为离线。

从我的理解来看,它应该是一个相当简单的存在请求,但是我无法使其正常工作。有没有一个模块,或者发送在线请求的简单方法,这样,在你的名单中拥有你的人就知道你在线,并且也是一种快速调查自己名单的方法。

任何帮助表示赞赏。

回答