2

私はちょうど気づいた - php-fastcgiとNGINXを使用して、「空の」phpファイルでmemory_get_peak_usage()を呼び出すと、結果は〜120KBのメモリになる

<?php

    print_r(memory_get_peak_usage());

?>

PHP はすべての呼び出しに本当に「多くの」メモリを必要としますか、それとも最初の呼び出し (私が推測するものを初期化する) でのみ発生し、その後のすべての連続した呼び出しはより少ないメモリを必要としますか?

空のファイルがすでに 140KB を使用していることにちょっと驚いたので、質問しています。いくつかのクラス、関数、および配列がその数を非常に速く押し上げると推測しています。

ええ、これはおそらく時期尚早の最適化と見なされることはわかっていますが、これらの 120KB がどこから来ているのか、また呼び出しあたりのコストを最小限に抑える方法があるかどうかを知りたいと思っています。

4

2 に答える 2

2

php.net docs ページの最初のコメントには、次のように記載されています。

スクリプトのピーク時のメモリ使用量が 7MB であることに気付いた場合は、すぐに心配したり、特定のページが 1000 人の訪問者に対して消費するメモリ量を集計するために表面的な計算を行って心配を悪化させたりしないでください。この非常に重要な事実を覚えておいてください。このようなスクリプトのメモリ消費のピークは、マイクロ秒のレベルです。特定のスクリプトが専用の 7000MB のメモリを必要とする唯一の方法は、この例では、1000 人の訪問者全員がまったく同じマイクロ秒でページにアクセスした場合です。

http://php.net/manual/en/function.memory-get-peak-usage.php

また、接続ごとのデフォルトの割り当ては 8 ~ 16 MB であるため、それでもまだそれをはるかに下回っています。

価値があるのは、私のサーバーで同じことを行うと650kbが得られるため、あなたはすでに私よりもうまくやっているということです;)

于 2012-11-02T00:00:05.557 に答える
2

これは、1 回の呼び出しで 5 ~ 15 MB かかる実際のアプリとは比べ物になりません。120KBがどこから来ているのかはわかりませんが、ロードされた拡張機能、バックトレース、ログからだと思います...

APC またはその他のアクセラレータをアクティブにしていますか?

于 2012-11-02T00:00:12.623 に答える