AJAX长轮询,提高效率

时间:2010-08-01 08:14:04

标签: php

有一段时间我一直在玩我的通知系统长轮询的想法,但我从来没有想过一种方法来使我的后端更有效率。

我见过的大多数实现都保持连接打开,并且php每隔几秒查询一次数据库服务器以查看是否已经添加了新数据。这让我感到震惊,因为javascript重复轮询服务器。

在任何一种情况下,我都会将我的数据库服务器命中数万次,这是不可取的。

是否有任何系统可以“警告”执行/休眠长轮询脚本到新数据?

1 个答案:

答案 0 :(得分:2)

单一系统

如果您的应用程序是唯一更改数据库的系统,那么只有在应用程序执行更改时才能触发侦听器(理想情况下,只有对每个侦听器感兴趣的实体进行更改)。

多个系统

如果多个系统访问/更改数据库,您可以

  • 使用数据库触发器

或者如果你不想这样做(我通常会避免它),你可以

  • 确保访问数据库的所有其他系统始终通知您的应用程序(通过某种消息传递机制)

或者如果那是不可能的

  • 您至少可以通过只有一个循环查询数据库进行优化,并立即通知所有侦听器(因此您没有为每个侦听器设置循环)。