2012-01-06 33 views
3

我正在创建一个网页,其中包含由AJAX请求动态填充的选择元素。如何在没有多个数据库连接的情况下执行多个AJAX请求?

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

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

+0

如果有太多的命中连接数限制和请求启动失败,那么多个连接只会很糟糕。 – 2012-01-06 12:40:25

回答

0

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

有一件事:从您的描述中,您听起来像是让页面即时生成SQL。这听起来像是注射攻击的配方。确保在应用之前清理AJAX。

+0

我认为限制每页使用的查询数量非常重要,并且这比使用的连接数量更重要。 – mtanti 2012-01-06 13:07:53

+0

如果您担心特定页面使用的查询数量,那么调节这是一个会话变量。既然你没有多说这个页面会做什么,很多这是猜测。 – ethrbunny 2012-01-06 13:15:46

2

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

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

如果您认为获取并返回数据正确连接,这应该在几毫秒为单位来完成,所以机会是非常小的,你将有151个打开的并发连接被所有工作的一个查询。

所以不..这不是问题。

+0

我认为限制每页使用的查询数量非常重要,并且这比使用的连接数量更重要。 – mtanti 2012-01-06 13:10:54

+0

显然,最好尽可能地执行最小查询。因此,而不是做10个查询来从同一个表中检索10个字段,最好将它们全部放入一个查询中。但我想这是说明问题。如果您在编写适当的优化查询时使用常识,那么连接的最大数量永远不会受到您的任何关注。 – Jules 2012-01-06 13:15:55

相关问题