0

我制作了一个网页,它必须每 2 秒从数据库中检索一次数据,以便向用户展示一个动态变化的市场价格和数量。

我得到以下代码:

  $.ajax({
      type: "get",
      url: "getData.php",
      data: {
          item: 'H',
          type: 'price'
      },
      success: function (high) {

          $.ajax({
              type: "get",
              url: "getData.php",
              data: {
                  item: 'L',
                  type: 'price'
              },
              success: function (low) {

                  var dist = high - low;
                  // do something with the high and low prices... 
                  // keep retrieving data based on the high and low prices... 
                  //more ajax called are nested inside here...
              }
          });
      }
  });

这个嵌套的 ajax 调用会导致服务器 cpu 过度使用吗?

在我的 getData.php 文件中,我总是有 require_once('connect.php'); 它连接到数据库。它是否会导致大量 mysql 连接,因为我有时会收到错误“超过最大 mysql 连接数”?我该如何解决?我是否合并类似的 ajax 调用并使用 parseJSON?

谢谢你。

4

2 回答 2

1

与数据库一样,数据库本身应该是您主要的性能问题。不要增加连接,而是尽量减少数据库对服务器的影响:

  • 如果可能,请确保您的查询(IES)被很好地索引并使用索引(而不是表扫描)。使用说明语句对此进行测试。有时,对数据库架构的微小更改可能会产生巨大的差异
  • 尽量确保查询在数据库查询缓存中,即。它们实际上只有在数据更改时才会执行。否则结果应该超出内存。为此,查询缓存需要足够大,并且需要注意一些查询条件,例如 Mysql 函数等
  • 简化查询可能会更好。虽然较大的查询本身可能表现良好,但如果将它们分解,则可能会从查询缓存中提供大量查询,并且它们通常会自行运行更短。

希望这会有所帮助,如果您需要更多帮助,您可能需要发布一些示例查询和模型(并可能将其放在 dba.stackexchange.com 上)

于 2013-10-19T03:18:58.583 回答
0

我不确定您在什么上下文中使用这些 AJAX 调用,但是在其他 AJAX 调用中嵌套 AJAX 调用不会导致更多的 I/O 使用,因为 AJAX 调用不是循环。你基本上做同样的事情

$.ajax{
    //do something
}
$.ajax{
    //do something else
}

除非您要求满足条件以启动第二次呼叫。

您想编辑您的 MySQL“my.cnf”文件以消除您遇到的错误:

max_connections = 100

这里的默认值是 100。听起来你正在运行 AJAX 怪物,所以将其更改为更高的数字

于 2013-10-19T03:04:22.160 回答