0

重複の可能性:
php/symfony/doctrine のメモリリーク?

forデータベースに挿入するサイクルがあるため、symfony 1.4 でオブジェクトを破棄する方法があるかどうかを知る必要があります。

foreach ($array_data as $payroll_employee)
{
  $discounts = new PayrollDiscounts();
  $discounts->setPayrollId($payroll_id);
  $discounts->save();
  $discounts->free(TRUE);
  unset($discounts);
}

このエラーを表示します:

致命的なエラー: 134217728 バイトの許容メモリ サイズを使い果たしました

だから私は記憶を届ける方法を知る必要があります。

4

4 に答える 4

1

Symfony でメモリを解放するのは難しい場合があることがわかりましたが、設定$discounts = null;を解除する代わりに設定を試すこともできます ( PHP でメモリを解放する際の優れている点: unset() または $var = null を参照)。

そのような単純な一括挿入の場合、Doctrine の代わりに SQL (できれば PDO) を使用して挿入を行うことをお勧めします。

于 2012-11-27T19:42:45.497 に答える
1

を使用unset()すると、変数に関連付けられているメモリが明確に解放$discountsされますが、ループの各パスで上書きされるため、変数の設定がメモリ割り当ての問題に遭遇しているとは思えません。$array_dataそれ自体が大きすぎませんか?$discountsオブジェクトで実行されたメソッドの 1 つが問題の原因ですか?

メモリの問題が発生している場所を見つけやすくするために、コードにいくつかのブレークポイントを設定してみてください。

于 2012-11-27T19:43:24.810 に答える
0

私はこれらのリンクで解決策を見つけました:

php / symfony / doctrineのメモリリーク?

すべてのアドバイスをありがとう!

于 2012-11-27T22:55:47.523 に答える
-1

を使用して、PHP でオブジェクトを破棄できますunset()。それはあなたがすでにしていることです。

使用可能なメモリを増やすには、PHP 構成値を設定する必要があります

memory_limit

より大きな数に。

于 2012-11-27T19:43:44.213 に答える