1

現在、php フレームワークを作成しています。require/includeまたはrequire_once/include_onceリクエスト中にファイルが多すぎると遅くなるかどうか疑問に思っていますか?

4

4 に答える 4

1

もちろんそうなるでしょう。何かを何度も行うと、速度が低下します。

ただし、より深刻な点として、ディスクに触れる IO 操作は、メモリ内で発生する操作に比べて非常に低速です。多くの場合、大規模なフレームワークを使用する場合、ファイル含めることが主要なパフォーマンス要因になります (Zend Framework を見てください...)。

ただし、通常、APC や同様の op コード キャッシュなど、これを軽減する方法があります。

時にはプログラミングアプローチも取られます。たとえば、私の記憶が正しければ、Doctrine 1 にはすべてを 1 つの巨大なファイルにまとめて IO 呼び出しを少なくする機能があります。

疑わしい場合は、フレームワークで作成されたアプリケーションの詳細なプロファイリングを行い、include/require/etc が主要なスロー ポイントの 1 つになっているかどうかを確認してください。

于 2012-05-18T06:21:24.203 に答える
1

はい、これによりアプリケーションが遅くなります。*_onceそのファイルが既に含まれているかどうかを確認する必要があるため、呼び出しは一般に高価です。インクルードが多いため、ハード ディスクへのアクセスが多く、メモリの使用量も多くなります。Zend Framework を使用して、要求ごとに合計 150 から 200 のファイルを含むアプリケーションを開発しました。全体的なパフォーマンスに与える影響を実際に確認できます。

于 2012-05-18T06:24:22.100 に答える
1

含めるファイルが多いほど、負荷が大きくなります。ただし、require と require_once のどちらかを選択する必要がある場合、require_once / include_once はより多くの負荷がかかります。これは、同じファイルが別の場所に含まれているかどうかを確認するためにサーバーがチェックを行う必要があるためです。したがって、それを回避できれば、少なくともパフォーマンスを向上させることができます。

于 2012-05-18T06:25:03.243 に答える
0

キャッシュ ライブラリを使用しない限り、リクエストが来るたびにそれらのファイルが何度も含まれてしまいます。確かにそれは物事を遅くするでしょう。include必要なものだけを編集するフレームワークを作成しますinclude

于 2012-05-18T06:29:27.960 に答える