首页 > 解决方案 > PHP mysqli_query 没有在 mysqli_free_result 上释放内存

问题描述

我有一个很长的脚本,它应该一个接一个地运行许多查询。问题是只要脚本没有结束,即使在 unset 或 mysqli_free_result 上,内存使用量也不会减少。

我附上了一些给出问题的示例代码。表 TMP_DUMP 包含 500K 行。

    public function memTest() {

        echo "start";

        $con = mysqli_connect("127.0.0.1","root","####","####");
        if (mysqli_connect_errno())
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
        $products = mysqli_query($con, "SELECT * FROM TMP_DUMP");

        mysqli_free_result($products);
        mysqli_close($con);

        echo "done";
        sleep(500);
    }

所以我保持 htop 打开并在开始打印后查看 RAM 使用情况。内存在某个点后不断增加并稳定下来,但在打印完成后它应该会减少,但事实并非如此。如果我等待脚本结束,那么内存会突然减少它增加的数量。

标签: phpmysqli

解决方案


推荐阅读