3

1分あたりのCPU負荷が高いhttpdリクエストのサイトを所有しています。httpdリクエストごとに「file_exists」を使用していることに気づきました。その機能は非常に重いですか?

4

3 に答える 3

6

この関数は、ファイルが存在するかどうかのみをチェックします。つまり、ディスクへのアクセスになります(少し時間がかかる場合がありますが、それほど時間はかかりません)。

アプリケーションがおそらく数十(数百ではないにしても)のPHPファイルで構成されていることを考えると、リクエストごとにすべてを読み取る必要があるため、file_exists違いはないと思います。

(少なくとも、ローカルディスク上のファイルをチェックしている限り、ネットワークドライブなどを経由しないでください)


補足として:PHPスクリプトのどこでCPUが使用されているかを特定したい場合は、プロファイリング機能を提供するXdebug拡張機能に興味があるかもしれません。

あなたは私が少し前に与えたこの答えを読むことができます、それはかなり長いです:どうすればphpで書かれたコードの速度を測定できますか? -ここにコピーして貼り付けません。

また、その質問に対する私の回答を読むこともできます(Xdebugとプロファイリングについて書いたセクションがあります)速度とスケーラビリティのためのコハナベースのWebサイトの最適化

于 2010-01-10T21:17:21.553 に答える
2

現実的であるため、「ボトルネックを推測する」をプレイすることは、かなり無駄な作業になる可能性があります。ZendStudioに組み込まれているようなプロファイラーを使用することをお勧めします。

于 2010-01-10T21:20:22.390 に答える
1

file_existsは通常、非常に安価です。特に、結果がphpの統計キャッシュにキャッシュされるためです。重いDBのような領域は、CPUの最大の消費者になる傾向があります。

プロファイリングを試して、アプリのどの部分が最も時間を使用しているかを判断します。いくつかの例を次に示します。

http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/

于 2010-01-10T21:18:27.970 に答える