2010-06-22 46 views
2

我正在编写一个PHP和Javascript实现私人消息功能的网站,我想这样做,当用户收到一条新消息,通知他们(通过在屏幕顶部闪烁的'邮件'图标)。最好的方法来检查用户在网站上的新私人消息?

问题是如何实现这个功能,而不必在每次加载页面时都检查消息数据库中的未读消息给指定用户,这似乎是每个用户在每个页面加载时执行的太多服务器负载。

有人可以提出一个更有效的方法吗?在接收到新消息时用户没有立即得到通知并不重要。

谢谢!

回答

1

避免做它的每一个页面加载,你可以有一个调用到数据库并检查用户是否收到消息的定时器功能中一些JavaScript。由于上午说,如果你只是有一个标志对用户表设置你可以做一个

select message_flag from tbl_usrs where usr_id = $usr_id 

现在说这样的一个选择语句本身是跑在每次页面加载真的不会增加负荷时间在你的服务器上多,除非你正在运行一个网站有大量的用户。

+0

我需要在这之后将message_flag设置回0吗? 我不知道太多关于服务器负载等,所以谢谢你通知我 - 我一直在考虑效率的心态,以至于我可能一直在OTT上它ha – Tommo 2010-06-22 14:15:30

+0

你不想设置message_flag恢复为默认值,直到用户访问消息框之后,或者也可以在查看所有未打开的消息之后才能重置该标志。我可能会使用第二种方法,并将消息表中的每个条目分配给某种查看标志。 当我把一个新的(个人)项目放在一起时,我的方法是先完成它,然后当它在某处解决时修复它。对于客户,我更多地考虑了如何在可扩展性等问题上过得去,以及需求是什么。 – 2010-06-22 14:56:34

0

您可以将新字段添加到用户表中,当有新消息到达他的收件箱时,该字段将设置为true。通过这种方式接收邮件标志被设置,你永远不会做一个查询来检查未读的消息。

0

您可以将字段'消息'添加到用户表中,并在将消息发送给用户时对其进行增加。

0

我想说,它可能不会有太多的服务器负载来检查每个页面加载的新消息的消息表。

通过适当的索引,这应该不是一个问题。

$ 0.02