php - 将新表格行推送到浏览器的最佳方式是什么?

标签 php mysql apache push-notification real-time

<分区>

我有一个 MySQL 数据库,每隔几分钟和几小时就会插入代表新新闻项的新行。打开的浏览器如何接收这些新的新闻项以放置在 HTML 表格的顶部?

在 HTML 表格的顶部,它可以显示“x 个新项目”(x 会随着新项目的插入而定期变化),当单击时,新项目将作为新行放置在表格的顶部。这就像大多数其他实时网络应用程序一样:Twitter 搜索、disqus 评论、YT 评论、hckrnews。

我正在运行一个 LAMP 设置,并且很乐意使用 HTML5、Jquery,但我希望让事情变得简单、容易和无处不在。我不介意轮询服务器以获取更新,理想情况下,我希望为用户提供打开或关闭轮询(或推送)的选项。

最佳答案

您可以使用 Ajax每 X 秒或分钟调用一次。然后使用 jQuery,您可以将新数据插入现有表。

伪代码:

  • 设置一个间隔为 X 秒/分钟的 JavaScript 计时器。

  • 在每个时间间隔后,使用 Ajax 向服务器发送一个请求。您可能需要一个参数,如 last id、last datetime 或类似的东西来告诉服务器哪些记录已经显示。

  • 获取响应并在表格顶部动态插入新行,并在某处使用 responseData.length 写入“X new items”。

Ajax 的更复杂替代方案是实现 Comet,但据我所知(未尝试)使用 PHP 和 Apache 有点困难。


未经测试的例子:

setInterval(function() {
    var currentRowsCount = $('#tableId tr').length - 1; // or ID or Date
    var table = $('#tableId');

    $.ajax({
        type: "POST",
        url: "some.php",
        data: { rows: currentRowsCount },
        dataType: "json"
    }).done(function( response ) {
        var data = $.parseJSON(response);

        $(data).each(function(key, value) {
            // add the new rows using any of the append, prepend, before or after methods
        })
    });
}, 60000); // 1 min

关于php - 将新表格行推送到浏览器的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103083/

相关文章:

基于 PHP 的游戏 - 为每个用户提供自己的数据库

mysql按天排序也有WHERE

php - Intex XDK 的 Ajax 连接失败

php - jQuery 和/或 PHP 位置查找器 : zip code and city/state

php - 如何在 PHP 中为数字添加前导零和逗号

php - 根据变量值发送数据到不同的表

php - 如何将两个 foreach 循环合并为一个

mysql - 在MySQL中组合2个SUMS并优化查询

python - Apache:重定向到 WSGI 脚本错误?

mysql - Apache 403 禁止允许来自所有 <Directory> - 虚拟主机