将数据添加到数据库时,数据立即推送到前端(Ushahidi)

时间:2016-07-13 07:00:24

标签: php mysql websocket kohana ushahidi

当有人在Ushahidi(开源网站项目)中添加帖子而不刷新页面时,我想实时更新我的​​地图视图。它的后端使用php(Kohana框架)和MySQL数据库,前端使用AngularJS。可能没有关于此的内置机制。所以我想找出适合的材料。

首先,我需要使用事件驱动的lib(例如this)来检测数据库更改。第二,如何检测数据库更改。第三,使用基于Web套接字的库(例如Socket.io)将数据实时推送到前端进行显示。

我在Laravel php框架中阅读了echo功能,这似乎适合这一点,但在Kohana中却没有。在这个系统中有没有更好的方法或一些好的参考?感谢

1 个答案:

答案 0 :(得分:0)

让我们从一个简单的问题开始:发送通知。 PHP不适合作为WebSocket服务器(尽管您可以这样做)。最好在Node中编写它并从PHP通知它。 WS服务器将继续发送通知。您也可以使用可以执行此操作的商业服务。

检测数据库中的更改:如果应用程序已正确编写(即它使用ORM,而不是原始的INSERT/UPDATE/DELETE/REPLACE查询),则足以修改使用https://docs.koseven.ga/guide-api/ORM#changed数据的save方法。

如果有几个原始查询,您可以手动处理它们。

否则,您可以使用触发器。将记录标记为已更新(例如:将数据插入日志/通知表)。在WebSocket服务器中,您可以定期检查此数据并通知收件人。