在我正在维护的网站中,我想添加一个新功能,其功能类似于 facebook 通知。我想自动检测数据库中的更改,然后如果插入/更新了新项目,那么它将产生通知。
我发现了这个:http ://www.9lessons.info/2009/07/auto-load-refresh-every-10-seconds-with.html
它使用 Jquery 自动更新 div。我试过了,修改了,它工作了:)
在我正在维护的网站中,我想添加一个新功能,其功能类似于 facebook 通知。我想自动检测数据库中的更改,然后如果插入/更新了新项目,那么它将产生通知。
我发现了这个:http ://www.9lessons.info/2009/07/auto-load-refresh-every-10-seconds-with.html
它使用 Jquery 自动更新 div。我试过了,修改了,它工作了:)
对于即时通知,您需要 WebSockets,例如用于 PHP 的Ratchet 。
检测数据库中的更改并不容易实现,更容易的是在更新数据库时用 PHP 发送消息。
为此,您需要与当前访问该页面的每个人创建一个 websocket 连接。当有人更新或插入时,将向所有连接的用户发送一条消息。
查看此页面以获取简单的教程http://socketo.me/docs/hello-world
有一种称为彗星(或长轮询)的技术可以帮助您实现这一目标。您不想做的是每x秒轮询一次服务器(通过 AJAX)以查看数据是否已更改 - 这是浪费和资源密集型的。基本上,comet 所做的就是轮询服务器以查看是否有任何新的更改要拉,只有当实际发生更改时,服务器才会响应。这意味着您只有在实际要提取新数据时才访问服务器。
它很容易在 JavaScript 中实现,但是由于您在标题中提到了 jQuery,所以这个插件可能有用。
你可以用触发器来做到这一点,但我会用一种更简单的方式来做到这一点:
1-当有人进行所需的插入/更新时,在同一个脚本中在专用表中插入一行,我们称之为它notifications
,对于您要发送的每个通知,它看起来像这样:
notifications(id, user_id, message, status)
2-然后有一个cron作业执行每X次读取所述表并向用户发送一个通知,user_id
并从表中删除该行(或者如果您想知道您发送了什么,则将其设置为“已发送”)。
编辑:crontab 示例,每 3 分钟执行一次。
首先键入crontab -e
要编辑,然后插入以下行:
0 */3 * * * complete_path_to_the_script > /dev/null