1

在我的测试环境类的析构函数中,我想删除测试数据库。以普通方法执行此代码可以正常工作。

将它放入析构函数(或使用register_shutdown_function)也可以,但它会导致我的 php 进程永远无法完成。使用 xdebug reveils 调查代码,这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';
    }
}
4

1 回答 1

1

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

我发现EntityManager在打开与该数据库的其他连接之前,我必须手动关闭该学说的数据库连接。这可能是因为我正在删除连接EntitiyManager指向的数据库。

__destruct问题与或无关register_shutdown_function。我已经能够重现并最终解决了普通用户代码的问题。

于 2012-10-19T08:36:02.967 回答