PHP如何优化foreach进程以便内存使用?

时间:2017-03-22 18:58:03

标签: php codeigniter-3

我在PHP上使用foreach的内存问题有些问题。 有一个使用如此多内存的进程。该过程只是从WebService获取数据并插入到数据库中。但数据很大,几乎有数千个数据。它的记忆力很大,几乎吃了2公斤的公羊。 反正有优化我的代码吗?我尝试过unset()和= NULL但是没有释放内存。 在这里我的代码,我正在使用codeigniter:

$proxy = $this->proxy;
$token = $this->token;
$table = 'nilai';

$qk =$this->db->query("SELECT id_reg_pd from $databaseakm");
$tampan = $qk->result();


foreach($tampan as $keyz0 => $data0){


    $id_reg_pd = $data0->id_reg_pd;
        $filter3 = "p.id_reg_pd='$id_reg_pd'";
        $order3= "";
        $limit3 = 500;
        $offset3 = 0;
        $tampan3 = $proxy->GetRecordset($token, $table, $filter3, $order3, $limit3, $offset3);


$_datas = array_chunk($tampan3["result"], 50);      

foreach($_datas as $key => $data)

    {
        $this->db->trans_start();
        $this->db->query("UPDATE temp_tabel SET status_isi = 2 WHERE nama_tabel = '$databasenilai'");
        $this->db->insert_batch($databasenilai, $data);
        $this->db->trans_complete();
        $tampan3 = NULL;
        $data = NULL;
        unset($tampan3);
        unset($data);
    }   
$tampan3 = NULL;
        $data = NULL;
        unset($tampan3);
        unset($data);
}
$tampan3 = NULL;
        $data = NULL;
        unset($tampan3);
        unset($data);

1 个答案:

答案 0 :(得分:0)

返回一个对象并使用while循环而不是每个循环。对于每次尝试将整个数据加载到内存中并循环遍历它,while循环将一次执行一个并获取下一个

相关问题