PHP5 OOアプリケーションが(サイズとトラフィックの両方で)成長するにつれて、__ autoload()戦略を再検討することにしました。
ファイルには常に含まれるクラス定義によって名前が付けられるため、CustomerクラスはCustomer.php内に含まれます。以前は、適切な.phpファイルが見つかるまで、ファイルが存在する可能性のあるディレクトリを一覧表示していました。
これは非常に非効率的です。なぜなら、必要のない多数のディレクトリを通過し、すべてのリクエストでそれを実行する可能性があるためです(したがって、stat()呼び出しを大量に実行します)。
私の頭に浮かぶ解決策...
-ディレクトリ名を指定する命名規則を使用します(PEARと同様)。短所:スケーリングが大きすぎないため、クラス名がひどくなります。
-ロケーションのある種の事前に構築された配列を考え出します(propelはその__autoloadに対してこれを行います)。短所:新しいコードをデプロイする前に再構築が必要です。
-アレイを「オンザフライ」で構築し、キャッシュします。これは、必要なクラス名とディレクトリ構造を可能にし、新しいファイルがリストに追加されるだけで完全に柔軟であるため、最良の解決策のようです。懸念事項は次のとおりです。それをどこに保存するか、削除/移動されたファイルはどうですか。ストレージには、ディスクI / Oのオーバーヘッドがないため、APCを選択しました。ファイルの削除に関しては、とにかくどこにも必要としないので、問題ではありません。動きに関しては...それは未解決です(歴史的にはあまり頻繁に起こらなかったので無視します)。
他の解決策はありますか?