1

php.ini で PHP MAMP サーバーを最大 "256M" に設定しましたが、突然メモリ エラーが発生します。これには、次の 2 つの点が奇妙です。

  1. これは、スクリプトが使用するための驚くほど大量のメモリです。私はショックを受けやすいかもしれませんが、スクリプトは 256M を超えて実行する必要がありますか? そうは思わなかっただろう。
  2. 設定を「512M」に変更しても、メモリエラーが発生し、256M の範囲内/周辺でメモリ不足が報告されます (設定が無視されているかのように)。新しい設定を有効にするのに十分だと考えたWebサーバーをリサイクルしました。

私が得ている正確なメッセージは次のとおりです。

[25-Oct-2012 14:27:53] PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 222300161 bytes) in [FILE_PATH]/wp-content/themes/lifegadget-pagelines/sections/lg_content/section.php on line 42
[25-Oct-2012 14:27:53] PHP Fatal error:  Call to a member function get() on a non-object in [FILE_PATH]/wp-content/object-cache.php on line 52

だから私の質問は次のとおりです:

  1. トラブルシューティング。メモリ使用量をトラブルシューティングする方法はありますか?
  2. スケール。256M の制限を超えることは明らかな問題ですか、それとも場合によっては正当化されますか?
  3. 新しい天井。512M の新しい上限が無視されるのはなぜですか? 512M のままで満足しているわけではありませんが、少なくとも元の状態に戻って実行できると思っていました (マシンに 16GB があるので、物理メモリは十分にあります)。
4

2 に答える 2

0

この関数ini_set('memory_limit', -1);を、メモリ リークが疑われるクラス/ページの最初に挿入します。これは、動作させるための一時的な解決策ですが、スクリプトがメモリ リークを起こしている正確な場所を知るのには役立ちません。

于 2013-01-30T22:44:59.047 に答える
0

無限ループが原因で、または 5.3 より前のバージョンの PHP で循環参照がある場合に発生する可能性があります。参照:ガベージ コレクション

于 2012-10-27T12:53:30.590 に答える