PHP通过PDO释放内存

时间:2012-12-23 04:40:23

标签: php mysql memory pdo

我想知道在get_result()之后是否有来自mysqli类的任何可用内存的方法,我看到人们使用closeCursor()方法,但编译器说:

Call to undefined method mysqli_stmt::closeCursor()

我通过我准备好的语句对象来调用它,如$Statement->closeCursor();

我看到closeCursor方法也关闭了与数据库的连接,所以它是否意味着如果我想进行另一个查询,我需要再次重新实例化mysqli类?如果是这样的话,还有其他方法我可以做同样但留下一个打开的连接?我只对free_sets离开并释放另一个查询的所有变量感兴趣,谢谢!

顺便说一下,我正在为自定义的mysql备份系统做这个,欢呼! - 埃德加。

2 个答案:

答案 0 :(得分:3)

closeCursor()不是mysqli语句方法。

您要找的是free_resultfree

答案 1 :(得分:1)

我可以找到closeCursor的替代品,使用它可以释放结果,而不用关闭连接。 (此片段在评论部分的手册中发布)

<?php 
/** 
 * @param PDOStatement $oStm 
 */ 
public static function closeCursor($oStm) { 
    do $oStm->fetchAll(); 
    while ($oStm->nextRowSet()); 
} 
?>

来自PHP手册PDOStatement::closeCursor

根据手册那里

PDOStatement :: closeCursor()既可以作为可选的驱动程序特定方法(允许最大效率)实现,也可以作为通用PDO后备(如果未安装驱动程序特定功能)实现。 PDO通用回退在语义上与在PHP脚本中编写以下代码相同:

<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>

希望这有帮助