我目前正在开发一个轻量级PHP框架,用于我的网站的一些高请求ajax,并遇到了一个让我完全难过的有趣问题。 ajax用于一系列通知,因此javascript每30秒发送一条新信息的ajax请求。这个ajax在整个站点的每个页面上都是活动的,所以我意识到它有很多请求,因为有几百个用户在任何特定时刻都在浏览网站,很多用户打开了几个窗口。
语法明智一切都很完美。问题是,当我为我的社区激活ajax时,MySQL数据库中有30-40个SLEEP命令。所有这些似乎都忽略了10秒的设置超时。因此,它会影响整个网站的性能。
我的理解是,剩余睡眠命令是尚未关闭的连接的结果。我使用MySQLi面向对象的类,并使用我自己的一些函数扩展它。一切都是通过教科书,并根据文档进行了双重检查,我确保MySQLi类的每一小部分都被关闭并发布。
如果任何人对这种效果有任何智慧或经验,我将非常感谢任何建议。
答案 0 :(得分:1)
您是否尝试过推送方法与当前的拉/轮询方法相比?看看Comet:
但是,有一些缺点,主要的一个是你必须保持一个开放的连接,一些浏览器限制你可以维护的连接数。以下文章讨论了使用Comet的优缺点,并提出了一种混合轮询方法:
这是一个关于彗星的stackoverflow问题: