我试图将大量数据从Mysql加载到数组,但我们的服务器内存限制太低了。我可以增加这个限制,但我想这不是解决方案。我需要更好的解决方案..某种类型的循环或什么。
$sql = "SELECT * FROM $tables";
$response = array();
$result = mysql_unbuffered_query( $sql );
while( $row=mysql_fetch_array( $result ))
{
$response[] = (
array(
"id" => $row['code'],
"name" => $row['name']
)
);
}
使用 mysql_unbuffered_query()会改善我的情况,但根本不会。
实际上我加载了大约1000行。
$sql = "SELECT 'code','name' FROM $tables";
$response = array();
$result = $this->con->prepare($sql);
echo self::convert(memory_get_usage(true)); // 512kb
$result->execute();
echo self::convert(memory_get_usage(true)); // 21.25 mb
$array = $result->fetchAll();
// here script fails -> due to out of memory
foreach($array as $key => $row) {
$response[] = (
array(
"id" => $row['code'],
"name" => $row['name']
)
);
我在服务器上设置了128 MB的内存。因此,如果我尝试获取21mb数据,它将失败......