72

悪い理由で、ディレクトリのmemory_limitsを 1 GB より大きく設定する必要がありますが、 Debian 5.0 (Lenny) サーバー上の PHP 5.2.17 で、たとえば 2048M を使用すると、php.iniのデフォルト値 ( 256M)。

PHP は Apache モジュールとして実行され、phpinfoは (ディレクトリに対して) 次の情報を提供します。

memory_limit    1024M    256M
suhosin.memory_limit    0    0

Apache モジュールまたは PHP 構成による制限はありますか? サーバーには 4 GB の RAM しかないことはわかっています。それはただの特別なスクリプトです。

4

5 に答える 5

35

PHPスクリプトで4 GBのRAMを使用する必要があるという同じ問題がありました。理由は関係ありません。目標は、PHP で 4 GB の制限を設定することでした。

最初のアイデアは を使用することでしたini_set('memory_limit', '4096M');が、これは機能しないことがわかりました。正直に言うとどうすればいいのか、なぜなのかはわかりませんが、当時の私にとってそれは重要ではありませんでした。私は 32 GB の RAM を搭載したシステムを使用していますが、それが可能でなければなりません。

制限を 1 MB 少なく設定すると実際に機能することがわかりました。これは私にとっては有効な解決策です。

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

実際、これまで実際に遊んだことはありませんでしたが、システム上で、この値がすべてのメモリ制限を完全に削除しているように見えることに気付きました。システムで可能な限り多くの RAM を使用できます。

于 2015-11-01T17:44:26.713 に答える
6

Hardened-PHP - Configurationで説明されているように、Suhosinでは、スクリプトが開始した値よりも大きな値を設定できません。

suhosin.memory_limit2048Mに設定すると、メモリ使用量を増やすことができます。

于 2013-05-31T10:05:27.510 に答える
4

の限界

ini_set('memory_limit', '4095M'); // 4 GBs minus 1 MB

オペレーティング システム(OS)に関連しています。32 ビット OS では、この最大制限を使用する必要があります。

今日、この回避策を使用してmemory_limitの問題を解決しました。

より高い制限を使用すると、PHP は奇妙な動作をします。クラスがインスタンス化されたときに、いくつかの public 非静的メソッド クラスで使い果たされたメモリを返しますが、__construct メソッドに die() を配置します (問題をテストするため)。

于 2020-04-01T09:45:22.577 に答える