注:這個問題有點長PHP:提高面向對象的類的加載時間
我有Service-Dao-Model
結構如下基於PHP的系統:
Service Factory > Foo Service > Core Service > Abstract Service > Service Interface
Dao Factory > Foo Dao > Core Dao > Abstract Dao > Dao
Foo > Core Model > Abstract Model
讓我解釋一下一點點地。我嘗試通過定義摘要&接口類中的抽象函數來首先集中代碼,然後在Core Service,Core Dao和Core Model中實現默認行爲。
然後,自定義函數被寫入Foo Service,Foo Dao和Foo Model。最後,服務工廠&道工廠負責創建對象在Factory Pattern。
其他信息:所有課程均附有log4php
對象__construct()
。
在目前的開發狀態下,我在初始化階段加載了大約65個PHP類。通過添加計時器(定時器爲microtime(true)
),我發現PHP在加載類時花費了大部分時間(0.02119s),接下來是將DB結果集轉換爲對象值(0.00608s),最後是DB查詢時間(0.00223s)。無法相信類加載時間比數據庫查詢時間多10倍!
問題:如何提高裝載類的PHP初始化時間?
版本:PHP 5.2.16,通過MySQLi的PHP擴展
UPDATE eAccelerator在被預安裝在共享主機連接到MySQL 5.1服務器,本地主機! Zend Engine v2.2.0 with eAccelerator v0.9.6.1
p.s.代碼可以在需要時共享。
你可能想考慮使用[xdebug](http://xdebug.org/)或[ XHProf的](https://github.com/facebook/xhprof)。有很多事情你可以改進*先*。另外,如果你還沒有,字節碼緩存(通過APC和朋友)將大大加快你的初始化階段。 – Charles
您是否有eAccelerator或其他緩存機制? –
@BenD沒有其他正在使用的緩存機制。將嘗試查看eAccelerator。 – Raptor