在我维护的网站中,我想添加一个功能类似于facebook通知的新功能。 我想自动检测数据库中的更改,然后如果插入/更新了新项目,则会生成通知。
我发现了这个:http://www.9lessons.info/2009/07/auto-load-refresh-every-10-seconds-with.html
它使用Jquery自动更新div。我尝试过,修改了它,并且它有效:)
答案 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