web-dev-qa-db-ja.com

PHP memory_limitを特定のPHPスクリプトに対して低い値に設定しますか?

PHPコードをウェブサイトのすべてのページで実行する必要があります。これはPHPコードは4MB以上のメモリを必要としません。それが理由です。次のコードを使用して、すべてのページに4MBのメモリを割り当てたい:

ini_set('memory_limit','4M');

次の分野でメリットがありますか?
1。ウェブサイトの速度
2。帯域幅の最適化
3。サーバーのメモリ使用量を最適化する

5
Forte

速度の向上、帯域幅の最適化、サーバーのメモリ使用量はありません。

メモリ制限とは、スクリプトがより多くのメモリを使用しようとすると、エラーが発生することです。これが唯一の効果です。PHPメモリ制限に達した場合、魔法のようにメモリを最適化しません。オブジェクトが16バイトのメモリを使用する場合、常に実際のメモリ制限が何であるかに関係なく、またそれが到達するか、到達しようとしている場合でも、16バイトを使用します。

  1. Webサイトの速度は、HTML、CSS、JavaScript、画像のサイズ、すべてのコンテンツをロードするために必要なページごとのリクエスト数、入力を処理して出力を生成するための分離コードにかかる時間など、多くの要因に依存します。などメモリ制限はこれに影響を与えません。

  2. 帯域幅の使用量は、HTML、CSS、JavaScriptおよび画像のサイズ、すべてのコンテンツをロードするために必要なページあたりのリクエスト数によって異なります。 2 MBまたは200 MBを制限として設定しても、何も変わりません。

  3. 特定のスクリプトのメモリ使用量は、オブジェクトの数とそれぞれのサイズに依存するため、どちらも変更されません。さまざまなスクリプトがランダムに大量のメモリを使用していて、それらを殺すことが唯一の応答である場合に限り、メモリ使用量にプラスの影響を与えます。メモリを埋める代わりに、これらの偽のスクリプトは単にPHPエラー。

    私はそのようなケースが存在することを強く疑っています。スクリプトがメモリを大量に消費する場合、開発者がすべきことは、プロファイラーを使用してスクリプトを検査し、メモリを過剰に割り当てている部分を修正することです。メモリをいっぱいにするインスタンスを強制終了することは、問題を「解決する」ための最も奇妙な方法です。

では、なぜメモリ制限を使用するのでしょうか。

メモリ制限は、アプリケーションが大量のメモリを取り始めないようにするために、デバッグに役立ちます。

これはプロファイラーに取って代わるものではありませんが、望ましくないので、より複雑なツールを使用することはできますが、ある日、アプリが2、50、または200 MBを十分に使用できるようになったときにアラートを受け取る必要があります。メモリ。

注:PHPドキュメントはそれについて非常に明確です:

これにより、スクリプトが割り当てることができるメモリの最大量がバイト単位で設定されます。 これは、サーバー上で利用可能なすべてのメモリを使い果たすスクリプトの作成を防ぐのに役立ちます。

出典: コアphp.iniディレクティブの説明 、私のものを強調。

9