首页 > 技术文章 > TP5报错 User qdm813229266 already has more than 'max_user_connections' active connections 解决办法

dwq521 2020-11-28 14:11 原文

修改database.php文件中的参数值:

// 数据库连接参数
'params' => [PDO::ATTR_PERSISTENT => true],

改完就好啦,页面立马就恢复了正常运行~ ~

关于PDO持久连接也叫长连接):

如果操作这个数据的人不多,并你进行长连接的连接资源使用很频繁的话使用长连接。这样速度比较快。

顾名思义,长连接就是一直连接从未断开。你应该清楚数据库连接有的是限定连接个数的。你一直连接就占用了一个连接资源。如果连接这个数据库的人不多的话,这样没问题,还能加快速度,你每次操作数据库的时候不用在进行连接操作。这样会加快效率。

如果这个数据库使用的人比较多的话,最好使用短链接,这样用完就释放。不会一直占着连接资源。导致其他人想用都连接不上。

在PHP中,我们使用new PDO()语句创建一个数据库连接,当连接数据库成功后,将会得到一个PDO类的实例,此连接在PDO对象的生存周期中保持活动。要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个NULL值给对象变量。如果不明确地这么做,PHP在脚本结束时会自动关闭连接。

不过,当我们创建的数据连接为PDO持久化连接时,该连接在使用完毕或者PHP脚本结束后并不会被关闭,而是被PHP缓存起来。当另一个使用相同凭证(主机、端口、数据库名、用户名、密码等信息完全一致)的PHP脚本请求建立连接时,PHP将直接返回之前被缓存起来的连接,从而达到连接重用。持久连接缓存可以避免每次访问数据库都要建立一个新连接的开销,从而让web应用程序更快.

推荐阅读