【问题标题】:How to automatically reflect the new Updates (on Database) to User Pages如何自动将新的更新(在数据库上)反映到用户页面
【发布时间】:2011-01-28 23:40:52
【问题描述】:

我正在尝试使用 PHP 和 Javascript 创建一个新的通知警报。假设当前有 100 个用户登录到在线公告板应用程序,并且任何一个用户发布了一条新通知。我想在所有用户屏幕上立即发出警报信号。 我知道,最简单的方法是不断 Ping 服务器,但我不想这样做,因为它会减慢服务器的速度。 此外,我在共享主机上。所以我无权访问任何套接字端口。这意味着,我无法建立从服务器到用户机器的任何直接 Socket 通信通道。

谁能建议我解决这类问题的其他方法???

【问题讨论】:

  • 如果您已经有了另一种解决方案,为什么还要寻求另一种解决方案?为什么你要求解决想象的(假设的)问题,而不是真实的问题?据您所知,它会减慢服务器的速度?从经验和确切的分析?我想没有。

标签: php javascript triggers cron


【解决方案1】:

这是一个 COMET 应用程序。谷歌彗星,你应该找到很多信息。基本上有两种通过 HTTP 检索异步通知的技术。第一个是 ping 服务器,您已经说过您不想这样做。另一种技术是向服务器发送请求,并让服务器仅在有数据时才响应。换句话说,服务器不是每秒 ping 一次并且仅在 50 ping 和 50 秒后才收到消息,服务器只是将第一个请求保持 50 秒,直到有东西要发送,然后响应。有一些工具可以为您完成所有这些工作。

【讨论】:

  • 但是有一个http服务器的最大打开连接数的问题。我认为,在共享主机上,这将是比服务器负载更大的问题。
  • 这里绝对没有免费的午餐。 Ping 消耗 CPU 时间,而 long-request 方法消耗资源。大多数支持 COMET 的服务器都允许应用程序以某种方式将请求置于冰上,以便它在等待响应时至少不使用线程或进程。它仍然使用文件描述符,但服务器至少有 1,000 个。如果您有 1,000 个用户都在等待 COMET 响应,那么从业务角度来看,您处于良好状态,并且可能可以获得更多服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多