如何自动检测数据库的更改并生成jquery通知?

时间:2013-05-17 15:06:08

标签: php jquery notifications

在我维护的网站中,我想添加一个功能类似于facebook通知的新功能。 我想自动检测数据库中的更改,然后如果插入/更新了新项目,则会生成通知。

我发现了这个:http://www.9lessons.info/2009/07/auto-load-refresh-every-10-seconds-with.html

它使用Jquery自动更新div。我尝试过,修改了它,并且它有效:)

3 个答案:

答案 0 :(得分:2)

对于即时通知,您需要WebSockets,例如PHP的Ratchet

检测数据库中的更改并不容易实现,当您还更新数据库时,更容易在PHP中发送消息。

为此,您需要与当前访问该页面的所有人创建websocket连接。当有人更新或插入时,将向所有连接的用户发送一条消息。

查看此页面以获取简单教程http://socketo.me/docs/hello-world

答案 1 :(得分:1)

有一种叫做彗星(或长轮询)的技术可以帮助你实现这一目标。您想要做的是每隔 x 秒轮询服务器(通过AJAX)以查看数据是否已更改 - 这是浪费和资源密集型的。基本上彗星的作用是轮询服务器以查看是否有任何新的更改要拉,并且只有当实际发生了更改时服务器才会响应。这意味着只有在实际需要提取新数据时才会点击服务器。

在JavaScript中实现起来很容易,但是既然你在标题中提到了jQuery,那么可以使用this插件。

答案 2 :(得分:0)

你可以用trigger做到这一点,但我会用更简单的方式做到这一点:

1-当有人进行所需的插入/更新时,在同一个脚本中在专用表中插入一行,让我们称之为notifications,对于您要发送的每个通知,它看起来像这样:

 notifications(id, user_id, message, status)

2-然后每隔X次执行一次cron作业,读取所述表并向用户发送一条通知user_id并从表中删除该行(或者如果你想要将其设置为“已发送”)知道你发了什么。)

编辑:crontab示例,每隔3分钟执行一次。

首先输入要编辑的crontab -e,然后插入以下行:

0 */3 * * * complete_path_to_the_script > /dev/null