我们应该分别使用 mysqli_free_result 释放 mysql 结果,否则这会消耗你的服务器 RAM 资源。
这在下面演示
<?php
$link = mysqli_connect('Hostname','Username','Password','Database');
echo '<br/>Memory Usage Before Query = '.memory_get_usage(false); $resultResource = mysqli_query($link, 'SELECT * FROM test');
echo '<br/>Memory Usage after Query = '.memory_get_usage(false); $result = array();
while ($result[] = mysqli_fetch_assoc($resultResource)) {}
echo '<br/><br/>Memory Usage Before Free Result = '.memory_get_usage(false); mysqli_free_result($resultResource);
echo '<br/>Memory Usage After Free Result = '.memory_get_usage(false); ?>
以下输出。
Memory Usage Before Query = 449464
Memory Usage after Query = 466528
Memory Usage Before Free Result = 474208
Memory Usage After Free Result = 457336
所以,可以观察到查询执行后有内存使用。查询执行完毕后,DB 服务器会立即将结果返回给 Web 服务器。Web 服务器上的结果随后会在 Web 服务器上的资源链接上进行处理,以便从中获取。
还观察到,使用 mysqli_free_result 后内存使用量更少,因为通过提供相应的资源链接,为相应查询存储在 Web 服务器上的资源被释放。