我們應該分別使用 mysqli_free_result 釋放 mysql 結果,否則這將消耗您的伺服器 RAM 資源。
如下所示:
<?php
$link = mysqli_connect('Hostname','Username','Password','Database');
echo '<br/>查詢前記憶體用量 = '.memory_get_usage(false); $resultResource = mysqli_query($link, 'SELECT * FROM test');
echo '<br/>查詢後記憶體用量 = '.memory_get_usage(false); $result = array();
while ($result[] = mysqli_fetch_assoc($resultResource)) {}
echo '<br/><br/>釋放結果前記憶體用量 = '.memory_get_usage(false); mysqli_free_result($resultResource);
echo '<br/>釋放結果後記憶體用量 = '.memory_get_usage(false); ?>
以下為輸出結果。
查詢前記憶體用量 = 449464
查詢後記憶體用量 = 466528
釋放結果前記憶體用量 = 474208
釋放結果後記憶體用量 = 457336
因此,可以觀察到查詢執行後有記憶體用量。查詢執行完成後,資料庫伺服器會立即將結果返回到網路伺服器。然後處理網路伺服器上的結果,以便從網路伺服器上的資源連結中擷取。
此外,還觀察到使用 mysqli_free_result 後記憶體用量較少,因為通過提供相應的資源連結釋放了網路伺服器上儲存的相應查詢資源。