已解决 在 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:要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁对象 - 您可以通过为保存对象的变量赋值来执行此操作。