注:この質問は少し長いです
私は次のような構造を持つPHPベースのシステムを持ってService-Dao-Model
います:
Service Factory > Foo Service > Core Service > Abstract Service > Service Interface
Dao Factory > Foo Dao > Core Dao > Abstract Dao > Dao
Foo > Core Model > Abstract Model
少しずつ説明させてください。最初にAbstract&Interfaceクラスで抽象関数を定義してコードを一元化し、次にCore Service、Core Dao、CoreModelでデフォルトの動作を実装しようとしています。
次に、カスタム関数をFoo Service、Foo Dao、FooModelで記述します。最後に、ServiceFactoryとDaoFactoryは、ファクトリパターンでオブジェクトを作成する責任があります。
その他の情報:すべてのクラスには、にlog4php
オブジェクトがアタッチされています__construct()
。
現在の開発状況では、初期化フェーズで約65のPHPクラスをロードしました。タイマー(タイミングmicrotime(true)
)を追加すると、PHPがクラスのロードに最も時間がかかる(0.02119秒)ことがわかりました。次はDB結果セットをオブジェクト値(0.00608秒)に変換し、最後はDBクエリ時間(0.00223秒)です。クラスの読み込み時間がDBクエリ時間の10倍であるとは信じられません!
質問:クラスのロード時にPHPの初期化時間を改善するにはどうすればよいですか?
バージョン:PHP 5.2.16、MySQLiPHP拡張機能を介してMySQL5.1localhostサーバーに接続します
UPDATE eAcceleratorは共有ホスティングにプリインストールされています!Zend Engine v2.2.0 with eAccelerator v0.9.6.1
psコードは必要に応じて共有できます。