【问题标题】:Event triggering in server-side scripts服务器端脚本中的事件触发
【发布时间】:2011-01-30 17:58:53
【问题描述】:

在 SO,当您的问题得到答案时。或者你有新的徽章,事件被触发。或者当您在论坛中获得新的 PM 时,它也会通过提醒消息让您知道。

当您在此事件后第一次进入网站时,您会看到您的帐户发生问题的消息。

这是如何实现的?脚本如何知道它们有新的东西要向您展示?

【问题讨论】:

    标签: php database ajax comet


    【解决方案1】:

    您正在寻找的编程技术称为Comet。维基百科的链接描述了它的一些实现,但最简单的方法是创建一个具有较长超时的 XMLHttpRequest,并且只返回更改数据。

    【讨论】:

    • +1 因为这确实是最好的解决方案,尽管使用 StackOverflow 他们实际上只是轮询。
    【解决方案2】:

    作为对您上一条评论的回答
    有几种技术可以将事件标记为“新”。它可以是数据库表中的另一个字段,布尔类型:告诉用户是否显示事件。或者 - 最简单的一个 - 只是将上次用户访问的时间记录在会话中,然后将所有即将发生的事件的时间与其进行比较。

    【讨论】:

      【解决方案3】:

      当其他人对您的答案或问题进行投票等操作时,就会发生该事件。这是在服务器端记录的。

      当您登录该站点时,可以通过在数据库中查找这些记录来确定在您离开时发生了一些事件。

      当您在网站上时,页面可能会定期轮询服务器以进行更改。所以它并不是真正触发事件的服务器。

      【讨论】:

      • 这个在服务器端是怎么记录的?例如,我的问题有两个新答案。如何记录此事件?
      • 问题和答案、cmets 和投票都存储在某种数据库中。当您与站点交互时,您的操作会将数据发送回服务器,然后将其存储在数据库中。当您浏览该站点时,该页面可以通过向服务器发送请求来使用 AJAX 在后台进行定期检查。服务器端程序将查找数据库查找更改并将结果发送回浏览器,然后显示通知等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多