PDO错误(已经有太多客户)

时间:2014-08-09 13:25:39

标签: php postgresql pdo

已解决 new PDO...之前添加if语句

数据库 - POSTGRESQL

嗨,我有一个循环,用这个函数连接到每个循环中的db:

class mypdo
{
    public function open()
    {
        if(!isset($this->VK_DBH))
        {
            $this->VK_DBH = new PDO("pgsql:host={$this->DB_HOST};port=5432;dbname={$this->DB_NAME}", "{$this->DB_USER}", "{$this->DB_PASS}");  
            $this->VK_DBH->query("set names utf8");
            $this->VK_DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); 
        }
    }
    ....

在循环结束时,连接将以此功能关闭:

    ....
    public function close()
    {
        $this->VK_DBH = null;
    }
}

所以我有这样的事情:

<?php
    $pdo = new mypdo();
    for($i = 0; $i < 300; ++$i)
    {
        $mypdo->open();
        //some other code
        $mypdo->close();
    }

我获得了一个异常 SQLSTATE [08006] [7]致命:对不起,太多的客户已经〜80-90步循环。 为什么会出现?或者如何正确关闭与db的连接?

请不要建议我在循环之前打开连接,因为我想了解为什么我有很多连接,如果我在每次迭代中按$this->VK_DBH = null;关闭它们。

从docs:要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁对象 - 您可以通过为保存对象的变量赋值来执行此操作。

http://php.net//manual/en/pdo.connections.php

0 个答案:

没有答案