从Mysql

时间:2015-06-22 16:40:58

标签: php mysql

我试图将大量数据从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数据,它将失败......

0 个答案:

没有答案