【问题标题】:Allowing recipients to see updates automatically允许收件人自动查看更新
【发布时间】:2013-04-06 10:54:46
【问题描述】:

我在测试我的网站时意识到,收到消息/评论的用户必须刷新页面才能看到任何警报或更改。

comments.php?do=comment&id=1 中显示id 为1 的帖子供用户评论。

我使用此表单提交评论,这通过同一页面上的 mysql 提取来显示内容。

<form action="" method="post" > input name="getcomment" type="text" value="What are your thoughts?"/> <input value="Comment!" type="submit"/> </form>

我在网上看到了很多关于在提交新评论时自动更新内容的资源(针对收件人),但我不确定哪个最好。请记住,这是一个非常小型规模的网站。

  1. 我有哪些选择? (JQuery/Ajax 似乎是最简单的)但是“轮询”数据库效率低吗?

  2. 我将如何实现这个(我觉得最困难)

【问题讨论】:

  • 看看socket.io,一个可以与php一起使用的框架来通知客户端这样的事件。对于第二个问题,我可以链接到另一个 answer
  • 谢谢,我会调查的。是什么让 socket.io 优于其他类似服务? (如果有的话)。
  • 好吧,我个人使用信号器,但那是针对 .NET 的。基本上 signalr 做了 socket.io 所做的事情,但 socket.io 更成熟。它看起来肯定更容易。
  • 哦,好吧,是的,它看起来确实有点令人困惑,但我一定会仔细阅读

标签: php jquery ajax


【解决方案1】:

您只需要像这样每隔几秒就轮询一次您的 php 脚本。 请记住,这是一个规模非常小的网站,投票可以做你想做的事。

setInterval(function(){
   $.ajax({
     url: "getComments.php"
   }).done(function(comment) {
     // show new comments
     $('#comment_section').append(comment);
   });
},5000); // poll every 5 seconds

【讨论】:

  • 谢谢!在'show new comments' 部分,我会在里面放什么?要刷新的
    包含我的 SELECT 查询?
  • 这是什么意思 要刷新的
    包含我的 SELECT 查询
  • 所以在我的comments.php 中,我有正在评论的帖子。下面是一个&lt;div&gt;,其中包含一个SELECT 查询以中继cmets。正是这个需要自动更新。
  • No.. 将该查询部分移动到另一个 php getComments.php 并使用 ajax 简单地轮询该 php。
  • 只是查询?因为我还在comments.php中的查询之后使用mysqli_fetch_array
【解决方案2】:

我认为您最好的选择是使用 JQuery/Ajax,因为它比使用套接字便宜得多。

如果您的用户接收即时更新并不重要,您可以进行投票。

【讨论】:

  • “更便宜的替代品”是什么意思?
  • 这不是真的,带宽和性能方面的套接字要优越得多。
  • 这就是我所假设的,肯定轮询数据库比使用套接字效率低
猜你喜欢
相关资源
最近更新 更多
热门标签