【问题标题】:How do you do multiple AJAX requests without multiple database connections?如何在没有多个数据库连接的情况下执行多个 AJAX 请求?
【发布时间】:2012-01-06 12:39:16
【问题描述】:

我正在创建一个网页,其中包含由 AJAX 请求动态填充的选择元素。

在某些事件中,选择元素向脚本发出请求,该脚本在执行时建立数据库连接,查询数据库并以接收到的数据进行响应,然后将填充选择元素。每个 select 元素在不同的事件中发出单独的请求。

在这种情况下,多个数据库连接是一个坏主意吗?有没有办法避免它们?我正在使用 PHP 和 MySQL。

【问题讨论】:

  • 只有当你达到连接限制并且请求开始失败时,多个连接才不好。

标签: php mysql ajax


【解决方案1】:

多连接不会造成任何伤害。根据您的网络服务器和数据库类型,它可能会有所不同,但默认的最大连接数为 151,如您所见 here。如果超过此数字,您将收到 Too many connections 错误,这意味着所有可用连接都已被其他客户端使用。

允许的连接数由 max_connections 系统变量。默认值为 151 以提高 MySQL 与 Apache Web 服务器一起使用时的性能。 (以前,默认值为 100。)如果您需要支持更多 连接,你应该为这个变量设置一个更大的值。

如果您建立了一个正确的连接来获取和返回数据,这应该在几毫秒内完成,因此您将有 151 个同时打开的连接都在处理查询的可能性非常小。

所以不..这不是问题。

【讨论】:

  • 我认为限制每页使用的查询数量非常重要,这比使用的连接数量更重要。
  • 显然最好尽可能减少查询。因此,与其进行 10 次查询以从同一张表中检索 10 个字段,不如将它们全部放入一个查询中。但我想这不言自明。如果您在编写适当的优化查询时使用常识,那么您将永远不会关心最大连接数。
【解决方案2】:

如果您每页或每次只发出几个请求,那么这不会过于昂贵。如果它是一个非常繁忙的页面或站点,则建立一个连接池并在会话之间共享。

有一件事:从您的描述看来,您让页面动态生成 SQL。这听起来像是注入攻击的秘诀。确保在应用 AJAX 之前对其进行清理。

【讨论】:

  • 我认为限制每页使用的查询数量非常重要,这比使用的连接数量更重要。
  • 如果您担心特定页面使用的查询数量,那么限制这是一个会话变量。由于您没有过多地说明页面将做什么,因此这是猜测。
猜你喜欢
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多