Javascript 长轮询和服务器行为

Javascript 长轮询和服务器行为,javascript,php,ajax,comet,long-polling,Javascript,Php,Ajax,Comet,Long Polling,尽管在PHP上工作了这么长时间,但最近我开始了解长轮询,否则我会定期发送ajax 可以理解,定期发送ajax会消耗带宽(考虑到站点有数千用户的情况)。此外,服务器仍然忙着为定期的ajax请求提供服务 长轮询的优点是,除非ajax保持打开状态,否则它只会在发生更改时响应ajax,从而大大减少带宽。然而,服务器需要继续工作(类似于while循环,直到出现错误条件),直到发生一些更改 我的问题是,在这种技术中,服务器必须承担负载。当有成千上万的用户时,它会不会影响像定期ajax那样说的方式 对不起,如

尽管在PHP上工作了这么长时间,但最近我开始了解长轮询,否则我会定期发送ajax

可以理解,定期发送ajax会消耗带宽(考虑到站点有数千用户的情况)。此外,服务器仍然忙着为定期的ajax请求提供服务

长轮询的优点是,除非ajax保持打开状态,否则它只会在发生更改时响应ajax,从而大大减少带宽。然而,服务器需要继续工作(类似于while循环,直到出现错误条件),直到发生一些更改

我的问题是,在这种技术中,服务器必须承担负载。当有成千上万的用户时,它会不会影响像定期ajax那样说的方式

对不起,如果我错了。

当你说“Load”时,让我们考虑带宽、CPU时间和其他资源。 带宽

正如您所说,定期ajax会消耗带宽。即使来自服务器的响应基本上是空的,每个轮询都会有一个HTTP请求-响应对。对于长轮询,服务器不会响应,除非它有什么要说的。这就是节省带宽的地方

CPU

如果长轮询实现在服务器端使用sleep(),则不会占用很多CPU周期

对于PHP:

请注意,一般来说,在软件中任何时候想要延迟,都应该使用类似sleep()的函数。对于定时延迟,不要使用没有sleep()的紧密循环

其他

根据服务器的配置,每个活动用户可能会使用一个进程或线程。即使在休眠时,该进程或线程也会消耗一些资源,包括任何分配的内存。除非您谈论的是大量同时使用的用户,或者您的应用程序在服务器上为每个用户使用大量内存,否则您不太可能遇到硬件限制。首先,您可能会遇到线程或进程数量的软配置限制

因此,如果您的应用程序每个活动用户拥有非常大的内存,那么长时间的轮询可能会使您的内存绑定用户数少于定期的AJAX实现,后者会在每次AJAX命中时分配和释放资源。有了好的设计,这不应该是个问题。

当你说“Load”时,让我们考虑带宽、CPU时间和其他资源。 带宽

正如您所说,定期ajax会消耗带宽。即使来自服务器的响应基本上是空的,每个轮询都会有一个HTTP请求-响应对。对于长轮询,服务器不会响应,除非它有什么要说的。这就是节省带宽的地方

CPU

如果长轮询实现在服务器端使用sleep(),则不会占用很多CPU周期

对于PHP:

请注意,一般来说,在软件中任何时候想要延迟,都应该使用类似sleep()的函数。对于定时延迟,不要使用没有sleep()的紧密循环

其他

根据服务器的配置,每个活动用户可能会使用一个进程或线程。即使在休眠时,该进程或线程也会消耗一些资源,包括任何分配的内存。除非您谈论的是大量同时使用的用户,或者您的应用程序在服务器上为每个用户使用大量内存,否则您不太可能遇到硬件限制。首先,您可能会遇到线程或进程数量的软配置限制

因此,如果您的应用程序每个活动用户拥有非常大的内存,那么长时间的轮询可能会使您的内存绑定用户数少于定期的AJAX实现,后者会在每次AJAX命中时分配和释放资源。有了好的设计,这不应该是个问题。

当你说“Load”时,让我们考虑带宽、CPU时间和其他资源。 带宽

正如您所说,定期ajax会消耗带宽。即使来自服务器的响应基本上是空的,每个轮询都会有一个HTTP请求-响应对。对于长轮询,服务器不会响应,除非它有什么要说的。这就是节省带宽的地方

CPU

如果长轮询实现在服务器端使用sleep(),则不会占用很多CPU周期

对于PHP:

请注意,一般来说,在软件中任何时候想要延迟,都应该使用类似sleep()的函数。对于定时延迟,不要使用没有sleep()的紧密循环

其他

根据服务器的配置,每个活动用户可能会使用一个进程或线程。即使在休眠时,该进程或线程也会消耗一些资源,包括任何分配的内存。除非您谈论的是大量同时使用的用户,或者您的应用程序在服务器上为每个用户使用大量内存,否则您不太可能遇到硬件限制。首先,您可能会遇到线程或进程数量的软配置限制

因此,如果您的应用程序每个活动用户拥有非常大的内存,那么长时间的轮询可能会使您的内存绑定用户数少于定期的AJAX实现,后者会在每次AJAX命中时分配和释放资源。有了好的设计,这不应该是个问题。

当你说“Load”时,让我们考虑带宽、CPU时间和其他资源。 带宽

正如您所说,定期ajax会消耗带宽。即使来自服务器的响应基本上是空的,每个轮询都会有一个HTTP请求-响应对。对于长轮询,服务器不会响应,除非它有什么要说的。这就是节省带宽的地方

CPU

如果长轮询实现在服务器端使用sleep(),则不会使用ma