PHP+;AJAX和MySQL-每2秒查询一次,等待的时间太多
我有一个基本的HTML文件,使用jQuery的ajax,每2秒连接一次polling.php脚本 php只是连接到mysql,检查ID是否比我隐藏的、存储的当前ID更新,然后检查echo是否有任何新的内容。由于javascript每2秒就连接一次,因此我在等待的时间内获得了数千个连接,这只是为了我的客户端。这是因为我的脚本一次又一次地重新连接到MySQL。我试过mysql\u pconnect,但没有任何帮助PHP+;AJAX和MySQL-每2秒查询一次,等待的时间太多,php,jquery,mysql,ajax,Php,Jquery,Mysql,Ajax,我有一个基本的HTML文件,使用jQuery的ajax,每2秒连接一次polling.php脚本 php只是连接到mysql,检查ID是否比我隐藏的、存储的当前ID更新,然后检查echo是否有任何新的内容。由于javascript每2秒就连接一次,因此我在等待的时间内获得了数千个连接,这只是为了我的客户端。这是因为我的脚本一次又一次地重新连接到MySQL。我试过mysql\u pconnect,但没有任何帮助 有没有办法让PHP打开1个连接,并继续使用它进行查询?而不是每次都重新连接,让所有这些
有没有办法让PHP打开1个连接,并继续使用它进行查询?而不是每次都重新连接,让所有这些时间等待连接。不确定如何在这里使其正常工作。没有简单的方法可以做到这一点,因为pconnect不能跨多个网页调用工作。但是,一些最小化数据库吞吐量的方法是:
如果需要的话,你可以更进一步,用它代替平面文件等。(也就是说,在这一阶段,这可能是一个过于复杂的解决方案。)事实上,我最终完成了基本的长轮询。我制作了一个简单的PHP脚本,用于无限while循环,它每2秒查询一次。如果它发现了一些新的东西,它会重复它,并打破循环。我的jquery只是ajax连接到它,并等待响应;在响应时,它会更新我的页面,并重新启动轮询。非常简单
另外,长轮询方法还减少了浏览器内存问题,并大大减少了服务器上等待连接的时间。“(序列化PHP数组、XML、HTML数据等)”。memcached在这里不是很容易使用吗?@Keyo很大程度上取决于他的PHP安装中是否有memcached。:-)因此,我首先提到了基本的文件系统方法。理想的解决方案是使用comet服务器,但我还没有弄清楚如何让comet服务器为我查询数据库。现在我将把间隔时间提高到5秒,尽管这会扼杀任何接近实时的东西。@Ryan-我建议也使用master PHP master script方法-这将从根本上将轮询查询的数量减少到每“n”秒两到三次。感谢您的所有回复。实际上,我最终做了基本的长轮询。我制作了一个简单的PHP脚本,用于无限while循环,它每2秒查询一次。如果它发现了一些新的东西,它会重复它,并打破循环。我的jquery只是ajax连接到它,并等待响应;在响应时,它会更新我的页面,并重新启动轮询。非常简单!这获得了大量的视图,所以我想我应该再添加一点。在PHP中创建一个while循环,并在15-30秒后使其中断。出于超时原因,我建议保持在30秒以下。在while循环中,您可以每秒查询一个数据库,或者memcached,或者通过filemtime()轮询一个简单的文本文件以查看它是否已更改。当发生新情况时,可以对文件使用touch()来更新其时间。如果有新内容,回显“new”并退出脚本。如果没有,则在循环后回显“无”或其他内容并退出。然后在Javascript中,检查“NEW”和“NONE”。