6

何らかの理由で、私のphpスクリプトの1つがphp.iniのメモリ制限またはini_setを無視しています。

print_r(ini_get_all)を実行すると、グローバルメモリ制限が100M(さらに言えばローカル)に設定され、スクリプトが致命的なエラーで終了したときに表示されます:メモリ不足(24714304が割り当てられています)(571バイトを割り当てようとしました)

これを診断するためのヒントはありますか?サーバーには8ギガのメモリがあり、これまでこのスクリプトの実行に問題はありませんでした。

これをデバッグするためのヒントはありますか?

ありがとう!

4

3 に答える 3

5

プロセスの仮想メモリが厳しく制限されていました (数値が低すぎます)。

bashシェルから私はこれをしました:

ulimit -v (memory_in_bytes、括弧なし)

これで問題が解決しました。神様、私は大好きです

于 2009-12-30T21:16:06.730 に答える
5

これの最も一般的な原因の 1 つは、通常、CLI PHP バイナリが予想とは異なる php.ini ファイルを使用していることです。これは、ユーザー権限、またはインストールされている PHP のバージョンのデフォルトの php.ini ファイルが異なることが原因である可能性があります。ただし、少しプロファイリングしたようで、スクリプト内でメモリ制限が正しい可能性があります。

その場合、オペレーティング システムによって強制されるプロセスにハード メモリ制限が存在する可能性は十分にあります。

このスレッドを見ることをお勧めします。そのポスターはあなたの状況と非常によく似た経験をしたからです。

于 2009-12-30T20:58:42.573 に答える
0

短くて甘い

ini_set('memory_limit', -1);

デバッグをスキップしたい場合

于 2009-12-30T21:01:50.053 に答える