微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 高频Ajax和MySQL睡眠过载

我目前正在开发一个轻量级PHP框架,用于我的网站的一些高请求ajax,并遇到了一个让我完全难过的有趣问题. ajax用于一系列通知,因此javascript每30秒发送一条新信息的ajax请求.这个ajax在整个站点的每个页面上都是活动的,所以我意识到它有很多请求,因为有几百个用户在任何特定时刻都在浏览站点,许多用户打开了几个窗口.

语法明智一切都很完美.问题是,当我为我的社区激活ajax时,MysqL数据库中有30-40个SLEEP命令.所有这些似乎都忽略了10秒的设置超时.因此,它会影响整个网站的性能.

我的理解是,剩余睡眠命令是未关闭的连接的结果.我使用MysqLi面向对象的类,并使用我自己的一些函数扩展它.一切都是通过教科书,并根据文档进行了双重检查,我确保MysqLi类的每一小部分都被关闭并发布.

如果任何人对这种效果有任何智慧或经验,我将非常感谢任何建议.

解决方法:

您是否尝试过推送方法与当前的拉/轮询方法相比?看看Comet:

> Comet a new approach to AJAX applications
> Comet (wikipedia)
> Comet programming: Using AJAX to simulate server push
> Ajax Push Engine

但是,存在一些缺点,主要的缺点是您必须维护打开的连接,而某些浏览器会限制您可以维护的连接数.以下文章讨论了使用Comet的优缺点,并提出了一种混合轮询方法

> The allure of Comet

这是一个讨论彗星的stackoverflow问题:

> Compatibility of Comet with current technology

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐