如何关闭symfony1.4中的条令连接

dvtswwa3  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(384)

我使用symfony1.4作为我的web应用程序,它使用doctory1.2连接到我的mysql数据库。我有一个symfony任务,它首先使用条令查询获取一些数据,然后执行一个非常耗时的不涉及数据库的操作(例如:永无止境的for循环),不需要数据库连接。因为后面的操作不需要打开数据库连接,所以我需要在数据库操作完成后关闭数据库连接。所以我尝试了以下代码来关闭数据库连接。

sfContext::createInstance($configuration);
sfContext::getInstance()->getDatabaseConnection('doctrine')->setAttribute(Doctrine_Core::ATTR_AUTO_FREE_QUERY_OBJECTS, true );

// Do the doctrine queries and fetch data

sfContext::getInstance()->getDatabaseManager()->shutdown();
gc_collect_cycles();

// Do the non-database operation

在执行非数据库操作时,我使用 SHOW PROCESSLIST 在mysql上运行的命令。它仍然显示symfony应用程序创建的mysql连接没有关闭,而是处于休眠状态。
有没有办法永久关闭symfony中的数据库连接。
注意:我发现如果在执行条令查询之前关闭了连接,条令连接就会关闭。
这很可能是因为条令使用pdo,pdo需要在关闭mysql连接之前取消所有引用,否则它会保持连接活动。但我不知道如何清除条令中的pdo引用。

ggazkfy8

ggazkfy81#

那是你正在处理的一些非常古老的东西。我不知道你为什么要从sfcontext singleton得到东西。您应该可以这样做:

$conn = Doctrine_Manager::connection();
$conn->close();

这会关闭连接,但会让它在连接管理器中注册。这基本上是从doctrine1手册中出来的。
这将允许您遍历连接并关闭它们,同时还可以从管理器中删除它们:

$manager = Doctrine_Manager::getInstance();
foreach($manager as $conn) {
    $manager->closeConnection($conn);
}

相关问题