0

我构建了一个应用程序(MySQL/PHP),它(及时)可能使用与远程(可能很慢)MySQL服务器的连接。该应用程序使用频繁打开数据库连接的 AJAX 耳语。我做了一些客户端优化,但从来没有足够的勇气使用持久连接,这在这里可能是个好主意。

我担心空闲的 mysql 连接可能会超过服务器限制,导致需要重新启动服务器。所以我打算用到mysql.connection_timeout15s,这会在限制后杀死每一个空闲的持久连接吗?或者它会阻塞系统资源直到服务器进程结束?

我不会在耳语中使用事务,并且每个锁都应该在连接关闭后释放,对吗?

还有其他我应该注意的持久连接问题吗?(我已经阅读了文档。)

4

1 回答 1

2

使用 MySQL 的持久连接通常不会获得任何好处。它的连接协议通常已经相当快了。当您使用常规的非持久连接时,您确实失去了对“干净”操作环境的保证。

如果您的任何脚本在事务中间因任何原因死亡或保留服务器端变量设置,则持久连接意味着当某些其他脚本再次拾取连接时,半完成事务仍然处于活动状态。

发生这种情况时,您很容易陷入僵局。新脚本不知道它有一个旧的/脏的连接,并且 MySQL 看不到原来的连接脚本已经消失并进行自己的清理,所以你最终会得到一个垃圾遍地的环境。

话虽如此,您可以通过设置限制 PHP 代表您保持打开的连接数mysql.max_persistent。无论您尝试从脚本建立多少连接,PHP 都不会超过该限制,因此您可以将其设置为低于 MySQL 自己的max_connections设置。

于 2011-12-23T14:20:50.897 回答