PHP-mysqli_fetch_all()消耗了大量的内存。这合理吗?

时间:2016-02-17 19:17:36

标签: php mysql memory memory-management

我在下面的代码中的echo语句向我显示我的内存使用在代码中指示的点是合理的[Point#1~ = 216728bytes(~217 kb)] [Point#2 = 6629952 bytes(~6.629 mb) )]。但是,当我打电话时突然:

  

mysqli_fetch_all($ ResultObj)

之后是以下致命错误:

  

致命错误:第28行的I:\ xampp \ htdocs \ GLS_DBSearchProject \ index.php中允许的内存大小为134217728个字节(试图分配36个字节)

很明显,这个错误告诉我程序正在花费PHP允许的内存使用量。很明显,代码中的第28行(第3点)是责备(只删除该行解决了我的所有问题)。然而,显而易见的是,在单个mysqli_result对象上调用mysqli_fetch_all是如何使用如此多的内存(通过简单的减法,看起来这个单个操作使用> = 127587776字节(~127 mb)的内存。完全不合理。特别是因为我查询的数据库表的数据长度为(16.5 MB),总数据库大小为~62 MB。

如果有人能告诉我我在这里俯瞰什么,我会非常感激。或者解释这种内存使用情况如何合理。

    echo '<br>';
    echo "Memory Usage: " . memory_get_usage() . '<br>'; //Point #1
    $query = "SELECT * FROM scans;";
    $ResultObjList = $AppInstance->DBSets[1]->QuerySet($query);
    echo '<br> DatabaseSet 1 TYPE: ' . print_r($AppInstance->DBSets[1]) . '<br>';
    foreach($ResultObjList as $ResultObj){
        echo '<br>' .get_class($ResultObj);
        echo "Memory Usage: " . memory_get_usage() . '<br>'; //Point #2
        $ResultsAsArray = mysqli_fetch_all($ResultObj); //Point #3

    }

0 个答案:

没有答案