0
PHPでforeachを使用しているメモリに関する問題があります。 あまりにも多くのメモリを使用するプロセスがあります。このプロセスは、WebServiceからデータを取り出し、データベースに挿入するだけです。しかし、データは膨大で、数千のデータがあります。それは本当に空腹で、2gigsのラムを食べます。 コードを最適化する方法はありますか? unset()とNULLを試しましたが、メモリを解放しません。PHPメモリ使用のためにforeachプロセスを最適化する方法は?
$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);
'unset'sを削除します。この場合は役に立ちません。 –
Ok、私はそれを行うでしょう –
あなたはパラメータとして 'offset'を使用して子スクリプトを複数回呼び出すマスタースクリプトを作成することができ、子スクリプトはメインクエリで' offset'を使用します: 'SELECT id_reg_pd from $ databaseakm LIMIT $ offset、100' –