我一直在网上寻找,我遇到的每篇文章似乎都在说一些稍微不同的东西。如果我正在使用结果集并且程序在发布结果之前退出,究竟会发生什么?
有没有更好的方法来确保它总是发生?数据库连接也是如此。
if($statement->fetch()) {
exit("Result!");
}
$statement->free_result();
free_result
告诉数据库引擎它可以释放结果集。
仅当您担心返回大型结果集的查询使用了多少内存时才需要调用它。所有相关的结果内存都会在脚本执行结束时自动释放。
您可以使用register_shutdown_function
它来确保您的结果从内存中释放出来
function shutdown(){
global $statement;
if($statement){
$statement->free_result();
}
}
register_shutdown_function('shutdown');
您可以register_shutdown_function
在 PHP 中使用以确保一个函数/许多函数在退出时触发。在您的示例中,您还可以将 if 语句更改为以下内容:
$exitResult = null;
if($statement->fetch()) {
$exitResult = "Result!";
}
$statement->free_result();
if ($exitResult !== null) exit($exitResult);
不过应该注意的是,大多数插件/扩展(连接到数据库等)在 PHP 进程关闭后(在脚本结束时)会自行清理。
如果你在一个类中使用这个,你可以保存引用$statement
然后__destruct
在类中使用一个函数。