2012-08-31 65 views
0

我一直在網上查找,我遇到的每篇文章似乎都略有不同。如果我正在使用結果集並且程序在釋放結果之前退出,那麼究竟發生了什麼?PHP - 正在發佈結果集

有沒有更好的方法來確保它總是發生?數據庫連接也是如此。

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

    $statement->free_result(); 

回答

1

free_result告訴數據庫引擎它可以釋放結果集。

如果您擔心有多少內存用於返回大型結果集的查詢,則只需要調用它。所有相關的結果內存在腳本執行結束時自動釋放。

您可以使用register_shutdown_function,以確保您的結果從內存中釋放

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

register_shutdown_function('shutdown'); 
0

您可以在PHP中使用register_shutdown_function以確保函數/許多函數在退出時觸發。在你的榜樣,你也可以改變if語句如下:

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

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

應該指出雖然,大多數的插件/擴展(連接到數據庫等)的PHP的停機後清理後自理過程(在腳本的末尾)。

如果您在課堂上使用此功能,則可以將參考文獻保存爲$statement,然後在該課程中使用__destruct函數。