错误:SQLSTATE[HY000][1040]连接太多


Error: SQLSTATE[HY000] [1040] Too many connections

我在一个网站上工作,我很少在标题中出现错误。我知道这个错误的一个可能的解决方案是更改max_connections,但除此之外,我也会遇到这个错误:

Fatal error: Call to a member function prepare() on a non-object in /db_managers/read_plans.php on line 20

我不确定是哪一个导致了另一个。关于太多连接错误,我已经联系了我的主机公司,看看最大连接数是多少。关于另一个错误,这是我的实现:

  1. index.php:

    <?php 
    require_once("layout/plans.php");
    print_price_list($page);
    ?>
    
  2. plans.hp:

    <?php
    require_once("db_managers/read_plans.php");
    $results = read_plans();
    // by a foreach loop I display elements of $results array
    ?>
    
  3. read_plans.hp:

    <?php
    require_once("singleton.php");
    function read_plans() {
    $db = Database::getConnection();
    $stmt = $db->prepare("SELECT * FROM the_table ORDER BY id DESC ");
    $stmt->execute();
    $result = $stmt->fetchAll();
    return $result;
    ?>
    
  4. singleton.php:

    <?php
    require_once("database.php");
    class Database {
    private static $db;
    private function __construct(){
    self::$db = new PDO("mysql:host=".HOSTNAME.";dbname=".DATABASE.";charset=utf8", USERNAME, PASSWORD);
    self::$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    }
    public static function getConnection() {
    if(!isset(self::$db))
       new Database();
    return self::$db;
    }
    ?>
    

此实现中是否存在导致read_plans.php错误的问题?或者可能是因为这个网站是共享主机?

我不确定是哪一个导致了另一个。

第一个。

我已经联系了我的托管公司

你不需要任何托管公司来查看数字,SELECT @@max_connections;就可以了。

的实施过程中是否存在任何问题

这很不寻常,但乍一看,它不会创建多个连接。因此,问题很可能是由查询速度慢引起的。你有吗?