我正在开发一个简单的 PHP 应用程序,使用 CouchDB 和 PHP-on-Couch访问一些 View ,它运行良好。我的下一步是引入 Ajax 以使用数据库中的数据更新前端。
我知道您可以使用 _changes 通知轻松检测对数据库所做的任何更改。因此,它是一个 index.html 监视更改(通过长轮询)的问题,它调用 loadView.php 来更新页面内容。
首先,我希望上面的方法是正确的...
其次,当浏览到 index.html 时,页面似乎永远不会完全加载(页面加载栏永远不会完成)。进行更改后,Firebug 会按预期显示结果,但不会显示任何后续更改。这时候页面好像停止了无限加载。
到目前为止,我正在使用 jQuery 进行 Ajax 调用...
$.getJSON('http://localhost:5984/db?callback=?', function(db) {
console.log(db.update_seq);
$.getJSON('http://localhost:5984/db/_changes?since='+db.update_seq+'&feed=continuous&callback=?', function(changes) {
console.log(changes);
});
});
知道这里会发生什么吗?
最佳答案
我相信答案很简单。
longpoll 查询是 AJAX,保证只响应一次,例如获取 HTML 或图像。在等待更改时可能需要一段时间才能响应;或者如果更改已经发生,它可能会立即回复。
连续 查询是 COMET。它永远不会“完成”HTTP 回复,它将永远保持连接打开(错误、崩溃等除外)。每次发生变化时,zoom,Couch 都会将其发送给您。
换句话说,尝试将 feed=longpoll
更改为 feed=continuous
,看看是否能解决问题。
对于背景,我建议在 change notifications 上阅读 CouchDB 权威指南当然还有出色的 Couchbase 单服务器 changes API documentation .
关于php - CouchDB实时Ajax推送更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530737/