我正在使用 jQuery 和 PHP 构建一个“多人游戏世界”。这是它的工作原理:
用户角色的位置取自数据库,相应地绘制用户(位置值是 CSS 值 - 左和上)
用户可以使用键盘上的箭头键四处移动,使用 jQuery 动画让他们的角色移动。当发生这种情况时(每次按下箭头),用户的位置值将被插入到数据库中并进行更新。
为了像您所说的那样实现“全局”(因此用户可以看到彼此),需要使用 AJAX 为每个用户同时更新所有值
我遇到的问题是我需要不断调用我编写的 JavaScript 函数,该函数连接到 MySQL 服务器并从数据库表中获取值。并且需要通过 setInterval(thisFunction, 1000);
不断调用此函数,但是我的主机只是因为服务器资源过载而暂停了我,我认为这是因为我所有的 MySQL 查询。即使在反复从我的数据库中获取值之后,我也必须每隔几秒插入一次值,所以我可以想象如果有足够多的客户端登录,这会随着时间的推移导致崩溃。如何减少我使用的查询数量?还有另一种方法可以做我需要做的事情吗?谢谢。
最佳答案
在资源使用方面,这与聊天系统本质上是一样的。尝试搜索一下,您会发现许多不同的解决方案,包括 long polling 和 memcached 等概念。例如,检查此线程:Scaling a chat app - short polling vs. long polling (AJAX, PHP)
关于php - 使用 jQuery 和 PHP 减少 MySQL 查询量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5806912/