最近、メモリ割り当ての問題に遭遇したので、ini_set('memory_limit', value);
値を段階的に入力しようとしたディレクティブを試し始めました。さて、ウェブ(およびSO)を検索すると-1
、value
. それで、私はそうしました、そして今、スクリプトは壊れることなく最後まで完全に実行されます(以前はメモリ割り当てエラーが発生していました)。
しかし、私が理解できないのは、スクリプトのファイルの最後に次の 2 行があることです。
$mem = memory_get_peak_usage(true);
echo "Peak mem. usage: <b>" . round($mem / 1024 / 10124, 2) . "</b> MB";
約10.8MBを生成します。これを調べると、次の/var/log/messages
行が表示されます。
Nov 21 13:52:26 mail suhosin[1153]: ALERT-SIMULATION - script tried to increase
memory_limit to 4294967295 bytes which is above the allowed value (attacker
'xx.xxx.xxx.xxx', file '/var/www/html/file.php', line 5)
これは、スクリプトが 4096MB を割り当てようとしたことを意味します。
どうすればいいの?また、私が最も興味を持ったのは、この場合、スクリプトの実行が停止しなかった理由です。のせいini_set('memory_limit', '-1');
ですか?-1
つまり、推奨されてvalue
いないので、スクリプトのどこに問題があるのか (メモリ内で一度に大量のデータを読み込んでいる)を知っているので、そのパッティングを読みました。これらのデータの違いに困惑しているだけなので、誰かがそれを明らかにしてくれるとありがたい.