0

我一直在网上寻找,我遇到的每篇文章似乎都在说一些稍微不同的东西。如果我正在使用结果集并且程序在发布结果之前退出,究竟会发生什么?

有没有更好的方法来确保它总是发生?数据库连接也是如此。

    if($statement->fetch()) {
        exit("Result!");
    }

    $statement->free_result();
4

2 回答 2

1

free_result告诉数据库引擎它可以释放结果集。

仅当您担心返回大型结果集的查询使用了多少内存时才需要调用它。所有相关的结果内存都会在脚本执行结束时自动释放。

您可以使用register_shutdown_function它来确保您的结果从内存中释放出来

function shutdown(){
    global $statement;
    if($statement){
        $statement->free_result();
    }
}

register_shutdown_function('shutdown');
于 2012-08-31T07:24:19.933 回答
0

您可以register_shutdown_function在 PHP 中使用以确保一个函数/许多函数在退出时触发。在您的示例中,您还可以将 if 语句更改为以下内容:

$exitResult = null;
if($statement->fetch()) {
    $exitResult = "Result!";
}

$statement->free_result();
if ($exitResult !== null) exit($exitResult);

不过应该注意的是,大多数插件/扩展(连接到数据库等)在 PHP 进程关闭后(在脚本结束时)会自行清理。

如果你在一个类中使用这个,你可以保存引用$statement然后__destruct在类中使用一个函数。

于 2012-08-31T07:22:29.227 回答