1分あたりのCPU負荷が高いhttpdリクエストのサイトを所有しています。httpdリクエストごとに「file_exists」を使用していることに気づきました。その機能は非常に重いですか?
3 に答える
この関数は、ファイルが存在するかどうかのみをチェックします。つまり、ディスクへのアクセスになります(少し時間がかかる場合がありますが、それほど時間はかかりません)。
アプリケーションがおそらく数十(数百ではないにしても)のPHPファイルで構成されていることを考えると、リクエストごとにすべてを読み取る必要があるため、file_exists
違いはないと思います。
(少なくとも、ローカルディスク上のファイルをチェックしている限り、ネットワークドライブなどを経由しないでください)
補足として:PHPスクリプトのどこでCPUが使用されているかを特定したい場合は、プロファイリング機能を提供するXdebug拡張機能に興味があるかもしれません。
あなたは私が少し前に与えたこの答えを読むことができます、それはかなり長いです:どうすればphpで書かれたコードの速度を測定できますか? -ここにコピーして貼り付けません。
また、その質問に対する私の回答を読むこともできます(Xdebugとプロファイリングについて書いたセクションがあります):速度とスケーラビリティのためのコハナベースのWebサイトの最適化
現実的であるため、「ボトルネックを推測する」をプレイすることは、かなり無駄な作業になる可能性があります。ZendStudioに組み込まれているようなプロファイラーを使用することをお勧めします。
file_existsは通常、非常に安価です。特に、結果がphpの統計キャッシュにキャッシュされるためです。重いDBのような領域は、CPUの最大の消費者になる傾向があります。
プロファイリングを試して、アプリのどの部分が最も時間を使用しているかを判断します。いくつかの例を次に示します。
http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/