php+mysql非缓冲查询,如何循环大数组?

另外一种PHP查询模式是非缓冲查询,数据库服务器会一条一条的返回数据,而不是一次全部返回,这样的结果就是PHP程序消耗较少的内存,但却增加了数据库服务器的压力,因为数据库会一直等待PHP来取数据,一直到数据全部取完。

很显然,缓冲查询模式适用于小数据量查询,而非缓冲查询适应于大数据量查询。

mysqli

<?php 
$mysqli  = new mysqli("localhost", "my_user", "my_password", "world"); 
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT); 
  
if ($uresult) { 
   while ($row = $uresult->fetch_assoc()) { 
       echo $row['Name'] . PHP_EOL; 
   } 
} 
$uresult->close(); 

pdo_mysql

<?php 
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass'); 
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); 
  
$uresult = $pdo->query("SELECT Name FROM City"); 
if ($uresult) { 
   while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { 
       echo $row['Name'] . PHP_EOL; 
   } 
} 

mysql

<?php 
$conn = mysql_connect("localhost", "my_user", "my_pass"); 
$db   = mysql_select_db("world"); 
  
$uresult = mysql_unbuffered_query("SELECT Name FROM City"); 
if ($uresult) { 
   while ($row = mysql_fetch_assoc($uresult)) { 
       echo $row['Name'] . PHP_EOL; 
   } 
}