PHPでは、しばしばメモリ制限の問題に直面しています。特に、Drupalなどの高度にリソースが統合されたシステムでは。
ここで知りたいのは:
編集:
シナリオとして、たとえばDrupalでは、Webパネル(Drushやスクリプトではない)を介してキャッシュをクリアしている間、大量のメモリが必要です。したがって、この場合のみでも、現在512 MB前後の上限が必要です。
いいえ、多いほど良くはありません。 単一スクリプトが消費できるメモリの量です。たとえば、サーバーに4 GBのメモリが搭載されている場合、2つのスクリプトのみが同時にすべてのメモリを消費する可能性があります。
一般的に、PHPスクリプトはメモリをほとんど使用しないでください。通常、スクリプトが予約するすべてのメモリは、終了時に解放されますが、明示的にunset
ting変数を使用することで、その前にメモリをクリーンアップできます。これにより、スクリプトのメモリ効率を高めることができます。
knowが大量のメモリを必要とするスクリプトがある場合、完全に安全で、上限を高く設定する必要があります。使用可能なメモリ量や実行中の他のアプリケーションに関してシステムの制限を高く設定すると、問題が発生する可能性があります。
また、メモリの制限が64 MBなどの場合、一部のデータを処理する無限ループに陥る可能性のあるスクリプトに欠陥があると、非常に速く停止することがよくあります。このシナリオでメモリ制限を4 GBにすると、システムが無限ループでフルティルトで長時間実行されたままになり、システム全体が応答しなくなる可能性があります。
しかし、私は4〜8 GBのメモリを搭載したシステムでは問題なく、約2〜4 GBのメモリ制限を持つ大規模なデータ処理アプリケーションを使用しました。他のユーザーが述べたように、これらのアプリケーションは1つのインスタンスであったことに注意してください。スクリプトの複数のインスタンスを実行するアプリケーションがある場合(ほとんどのWebアプリケーションがそうであるように)、各インスタンスで大量のメモリを使用することにより、重大な問題が発生します。メモリが不足し、メモリが解放されるまで、以降のクライアントはアプリケーションを使用できなくなります。
しかし、問題を隠すためにメモリ制限を増やすだけではありません。アプリケーションが多くのメモリを必要とする理由を調べ、まずそれを修正できるかどうかを確認します。