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


Push data instantly to frontend when adding data to database (Ushahidi)

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

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

我已经阅读了 Laravel php 框架中的echo功能,它似乎适合这一点,但在 Kohana 中并非如此。在这个系统中是否有更好的方法或一些好的参考?谢谢

让我们从一个更简单的事情开始:发送通知。PHP 不适合作为 WebSocket 服务器(尽管您可以这样做)。最好用 Node 编写它并从 PHP 通知它。WS 服务器将继续发送通知。您也可以使用商业服务来做到这一点。

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

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

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