Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在析构函数中调用PDO::exec()会挂起PHP进程_Php_Pdo_Destructor - Fatal编程技术网

在析构函数中调用PDO::exec()会挂起PHP进程

在析构函数中调用PDO::exec()会挂起PHP进程,php,pdo,destructor,Php,Pdo,Destructor,在测试环境类的析构函数中,我想删除测试数据库。在普通方法中执行此代码效果良好 将其放入析构函数(或使用寄存器\u shutdown\u函数)也可以工作,但它会导致我的php进程永远无法完成。使用xdebug revails调查代码,echo'finished'从未到达 你知道为什么这会导致php进程挂起吗 public function __destruct() { $config = $this->getConfiguration(); if ($config['dbte

在测试环境类的析构函数中,我想删除测试数据库。在普通方法中执行此代码效果良好

将其放入析构函数(或使用
寄存器\u shutdown\u函数
)也可以工作,但它会导致我的php进程永远无法完成。使用xdebug revails调查代码,
echo'finished'从未到达

你知道为什么这会导致php进程挂起吗

public function __destruct()
{
    $config = $this->getConfiguration();
    if ($config['dbtests']['autogenerate'] && $config['dbtests']['cleanup'] ) {
        /** @var \PDO $dbh  */
        $dbh = new \PDO('mysql:host=' . $config['database']['host'], $config['database']['user'], $config['database']['password']);
        $dbh->exec('DROP DATABASE ' . $config['database']['dbname']);
        echo 'finished';
    }
}

如前所述,此代码来自我的测试环境类。这用于测试条令实体

我发现我必须手动关闭doctrine
EntityManager
的db连接,然后才能打开与此db的其他连接。这可能是因为我正在删除
EntitiyManager
连接所指向的数据库


该问题与
自毁
寄存器关闭功能
无关。我已经能够重现并最终解决普通用户代码的问题。

如前所述,此代码来自我的测试环境类。这用于测试条令实体

我发现我必须手动关闭doctrine
EntityManager
的db连接,然后才能打开与此db的其他连接。这可能是因为我正在删除
EntitiyManager
连接所指向的数据库

该问题与
自毁
寄存器关闭功能
无关。我已经能够重现并最终解决普通用户代码的问题