使用PHP / MySQLi我想将一些数据提取到数组中。数据大小只有几兆字节:
获取此数据的表转储的代码如下:
error_reporting(E_ALL);
$q = "SELECT * FROM mytable";
if (!$result = $mysqli->query($q)) {
echo "Error: Our query failed to execute and here is why: \n";
echo "Query: " . $query . "\n";
echo "Errno: " . $mysqli->errno . "\n";
echo "Error: " . $mysqli->error . "\n";
return $ret;
}
if ($result->num_rows === 0) {
$ret = 0;
return $ret;
}
$ret = array();
while($row = $result->fetch_array()){
array_push($ret, $row);
}
echo mb_strlen(serialize((array)$ret), '8bit');
执行以下代码时,我得到了:
但是它说试图分配28672字节,这远远没有达到极限。这是为什么?
答案 0 :(得分:0)
这样想。
你有100美元。你去糖果店,并决定一个接一个(你的while
循环)购买200美元的糖果棒。
前100次购买将会通过,但下次你尝试购买1美元的糖果时,你会被告知“你曾经花了一美元,但你已经花了100美元”。 / p>
PHP报告了 last 指令尝试使用的内存量。在这种情况下,它可能是array_push($ret, $row);
调用。