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

时间:2013-12-03 06:18:07

标签: php mysql pdo

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

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

我不确定哪一个导致另一个。关于太多的连接错误,我已经联系了我的托管公司,看看max_connections的编号是多少。关于其他错误,这是我的实现:

  1. 的index.php:

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

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

    <?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;
    }
    
    ?>
    
  5. 此实现中是否存在导致read_plans.php错误的问题?或者也许是因为网站是在共享主机上?

1 个答案:

答案 0 :(得分:3)

  

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

首先出现的一个。

  

我已联系过我的托管公司

您不需要托管公司查看号码,SELECT @@max_connections;即可。

  

此实施中是否存在任何问题

这很不寻常,但一眼就看不到会创建多个连接。因此,问题很可能是由于查询速度慢造成的。你有吗?