繁体   English   中英

如何处理 mysql 和 php 中的“max_user_connections”?

[英]How can I handle the 'max_user_connections' in mysql and php?

当我在服务器中有多个请求时会出现错误消息。 我的服务器托管告诉我,我的最大用户连接数仅为 15。我该如何管理此请求并避免此错误。?

在 my.cnf 中:

max_connections=100

或者,如果您无法更改此文件,则必须限制 php 软件中的连接数(如果您使用的是池或类似软件)以避免达到此限制。

根据您的环境,答案可能会有很大差异。 要点是您需要更好地管理您的连接; 记住在完成后关闭它们,并在可以时重新使用它们。 在不了解您的堆栈的情况下,我无法给您更好的建议。 您可能希望检查是否正在打开持久连接而不是关闭它。

  1. 切换到不同的托管服务提供商/包

  2. 通过重构查询和更改索引来提高查询的性能

  3. 在需要运行查询之前不要在代码中打开数据库连接

  4. 在不再需要数据库连接后立即显式关闭它们

  5. 如果您重复运行相同的查询,请在 DBMS 之外缓存数据(与使用 DB 缓存相比,效率要低得多/需要更多的代码)

对于仍在寻找有关此主题的最新信息的人 mysql_pconnect:此扩展在 PHP 5.5 中已弃用。 0,它在 PHP 7.0 中被删除。 相反,应使用 MySQLi 或 PDO_MySQL 扩展。 可以尝试在连接到 mysqli 时在主机名前加上“p:”,以利用持久性行为。

mysql_pconnect 的替代方案包括:

1) mysqli_connect() 带 p: 主机前缀 示例:

mysqli_connect('p:192.168.x.y', 'USER', 'PWD', 'DB', 3306);

2) PDO::__construct() 使用 PDO::ATTR_PERSISTENT 作为驱动程序选项**

例子:

   try {
        $conn = new PDO("mysql:host=$mysql_host;dbname=$database",  $mysql_user, $mysql_password, array(PDO::ATTR_PERSISTENT=>true));
    } catch (PDOException $e) {
        die ("<b>Cannot connect to database, check user credentials.</b>");
   }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM