我第一次尝试长轮询。
在 PHP 脚本中,我有一个带有睡眠定时器的 while 循环,它将脚本冻结 10 秒,然后它再次在数据库中查找新内容。
我在考虑性能和服务器/数据库负载/连接:
对服务器来说更糟糕的是:许多 GET 请求(ajax),或许多打开/关闭数据库连接?
使用长轮询但在每一轮while循环中关闭并重新打开数据库连接会更好吗(以释放有限数量的连接)?
我第一次尝试长轮询。
在 PHP 脚本中,我有一个带有睡眠定时器的 while 循环,它将脚本冻结 10 秒,然后它再次在数据库中查找新内容。
我在考虑性能和服务器/数据库负载/连接:
对服务器来说更糟糕的是:许多 GET 请求(ajax),或许多打开/关闭数据库连接?
使用长轮询但在每一轮while循环中关闭并重新打开数据库连接会更好吗(以释放有限数量的连接)?
这并不像听起来那么简单:从一个简单的“我应该还是不应该”替代方案开始,随着扩展到更多服务器,复杂性迅速增加。
两种方法都碰壁后,我们提出了一个代理方案,即使在廉价的共享主机上也能很好地工作:
这使得当并发轮询增加时,可以实现较短的服务器端轮询间隔而不会遇到问题。