【问题标题】:How to minimalise mysql connections and ajax calls in jQuery game (ping function)?如何在 jQuery 游戏(ping 函数)中最小化 mysql 连接和 ajax 调用?
【发布时间】:2012-06-05 11:15:54
【问题描述】:

我正在编写一个基于浏览器的游戏。客户端是jQuery,服务器是PHP/MySQL。

这是一款回合制游戏,所以大部分的客户端-服务器通信都是通过调用-响应(jQuery-PHP)来实现的。每当用户单击按钮或任何其他活动元素时,都会发生该调用。在 JQuery 中调用后,PHP 控制器创建一些类,连接到数据库并返回响应。这种交流对我来说很好,不会引起连接数等问题(类似于使用网站时的标准流量)。

不幸的是,我还需要一些来自服务器端的“调用”。该示例是要加入的活动游戏列表。游戏列表更改时必须通知客户。最大延迟不超过 1 秒。

现在我通过从客户端 (jQuery) 和服务器 anserws 发送“无”调用来实现它,或者“game2 created”等。但是“pings”将每秒从每个发送玩家们。对于它们中的每一个,服务器将创建类并连接到 mysql,这会导致“数据库连接错误”。

有什么方法可以最小化 mysql 连接和/或 ajax 调用? 我使用标准的 www 服务器,没有 root 帐户。

【问题讨论】:

标签: php jquery mysql connection ping


【解决方案1】:

从这里开始:

But that 'pings' will be send every second from each of the players

而不是两个玩家都调用every second服务器(实际上是2个调用,与 每个连接的玩家的数量都会增加),您可以通过检查idle timedoing nothing 的经过时间来优化它;如果 2 次连续通话没有返回任何内容,则应将通话延迟增加到 2 秒,然后增加到 4 秒 等(只需使用setInterval 并使其连续运行); 这将使您的应用呼吸(我有自己的游戏使用它)

接下来要做的是通话政策;无需在玩家的命令中调用服务器,您只需将玩家的命令存储在 js 数组中,每 X 秒发送一次 那个数组关闭;如果没有命令,则没有 ajax 调用。是的,您会延迟,但请考虑许多用户 连接到可能较差的服务器...

如果你想进一步推动事情,你也可以使用comet technology..

【讨论】:

  • 谢谢你们。我已经使用了你的提示和拉蒙的提示。我还对代码进行了一些其他更改,它似乎有效:-)
【解决方案2】:

话虽如此,这可能是 eggyal 提到的可能重复..

关于 ping 和响应(客户端 ping 服务器场景)

1) 您是否考虑过编写临时文件(即 Smarty 编译文件,缓存时间为 X)? 玩家 Y 完成任务后,删除文件(或在该文件中写入内容)。

每个玩家都会使用 game_id(或任何唯一值)发出 AJAX 请求,以检查该编译文件是否存在。这将为您节省许多 mysql 调用。如果文件的缓存时间已经过期,你会调用mysql。

2) 丑陋 -> 试试 mysql 持久连接是否有帮助(我不确定)

【讨论】:

    猜你喜欢
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2012-10-25
    相关资源
    最近更新 更多