我一直在網上查找,我遇到的每篇文章似乎都略有不同。如果我正在使用結果集並且程序在釋放結果之前退出,那麼究竟發生了什麼?PHP - 正在發佈結果集
有沒有更好的方法來確保它總是發生?數據庫連接也是如此。
if($statement->fetch()) {
exit("Result!");
}
$statement->free_result();
我一直在網上查找,我遇到的每篇文章似乎都略有不同。如果我正在使用結果集並且程序在釋放結果之前退出,那麼究竟發生了什麼?PHP - 正在發佈結果集
有沒有更好的方法來確保它總是發生?數據庫連接也是如此。
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');
您可以在PHP中使用register_shutdown_function
以確保函數/許多函數在退出時觸發。在你的榜樣,你也可以改變if語句如下:
$exitResult = null;
if($statement->fetch()) {
$exitResult = "Result!";
}
$statement->free_result();
if ($exitResult !== null) exit($exitResult);
應該指出雖然,大多數的插件/擴展(連接到數據庫等)的PHP的停機後清理後自理過程(在腳本的末尾)。
如果您在課堂上使用此功能,則可以將參考文獻保存爲$statement
,然後在該課程中使用__destruct
函數。