Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 高频Ajax和MySQL睡眠过载_Php_Javascript_Mysql_Ajax_Sleep - Fatal编程技术网

Php 高频Ajax和MySQL睡眠过载

Php 高频Ajax和MySQL睡眠过载,php,javascript,mysql,ajax,sleep,Php,Javascript,Mysql,Ajax,Sleep,我目前正在为我的网站开发一个轻量级的php框架,与一些高要求的ajax一起使用。我遇到了一个有趣的问题,我完全被难住了。ajax用于一系列通知,因此javascript每30秒发送一个ajax请求以获取新信息。这个ajax在整个站点的每个页面上都是活动的,因此我意识到它有很多请求,因为在任何给定时刻都有数百个用户在浏览该站点,其中许多用户打开了几个窗口 就语法而言,一切都是完美的。问题是,当我为我的社区激活ajax时,MySQL数据库中有30-40个SLEEP命令。所有这些似乎都忽略了设置的10

我目前正在为我的网站开发一个轻量级的php框架,与一些高要求的ajax一起使用。我遇到了一个有趣的问题,我完全被难住了。ajax用于一系列通知,因此javascript每30秒发送一个ajax请求以获取新信息。这个ajax在整个站点的每个页面上都是活动的,因此我意识到它有很多请求,因为在任何给定时刻都有数百个用户在浏览该站点,其中许多用户打开了几个窗口

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

我的理解是,剩余的睡眠命令是连接未关闭的结果。我正在使用MySQLi面向对象类,并用我自己的一些函数对其进行了扩展。所有内容都是由教科书编写的,并根据文档进行了仔细检查,我确保MySQLi类的每一个小部分都已关闭并发布


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

您是否尝试过推式方法而不是当前的拉/轮询方法?看看Comet:

然而,也有一些缺点,主要是你必须保持一个开放的连接,一些浏览器限制了你可以保持的连接数量。下面的文章讨论了使用Comet的优缺点,并提出了一种混合轮询方法:

这里有一个关于彗星的问题:



我不确定我能把COMET融入到我的设计中有多好。谢谢你的建议,我会记住的。我发布的一些链接讨论了如何实现Comet,甚至是使用AJAX。