PHP - 令人困惑的性能问题从MySQL获取数据

时间:2017-09-18 19:12:21

标签: php mysql mysqli

使用PHP / MySQLi我想将一些数据提取到数组中。数据大小只有几兆字节:

enter image description here

获取此数据的表转储的代码如下:

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');

执行以下代码时,我得到了:

enter image description here

但是它说试图分配28672字节,这远远没有达到极限。这是为什么?

1 个答案:

答案 0 :(得分:0)

这样想。

你有100美元。你去糖果店,并决定一个接一个(你的while循环)购买200美元的糖果棒。

前100次购买将会通过,但下次你尝试购买1美元的糖果时,你会被告知“你曾经花了一美元,但你已经花了100美元”。 / p>

PHP报告了 last 指令尝试使用的内存量。在这种情况下,它可能是array_push($ret, $row);调用。