通过PDO释放内存


PHP Free memory through PDO

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

Call to undefined method mysqli_stmt::closeCursor()

我通过我的预处理语句对象调用它,像这样$Statement->closeCursor();

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

顺便说一下,我正在为我刚刚制作的自定义mysql备份系统做这个,干杯!——埃德加。

closeCursor()不是mysqli语句方法

你要找的是free_result和free

我可以找到closeCursor的替代方案,使用它可以释放结果,而不需要关闭连接。(这段代码发布在manual的注释部分)

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

from PHP manual PDOStatement::closeCursor

根据手册

PDOStatement::closeCursor()要么作为可选的特定于驱动程序的方法实现(允许最大效率),要么在没有安装特定于驱动程序的函数时作为通用的PDO回退。PDO泛型回退在语义上与在PHP脚本中编写以下代码相同:

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

希望能有所帮助