簡體   English   中英

減少包含文件的數量

[英]Reduce number of included files

我的基於Zend Framework和Doctrine的應用程序在每個請求中包含> 300個文件。 它們大多是相同的文件。

這是一個非常巨大的開銷。 部分由Zend_Cache (和Memcache)解決,但並非所有頁面都可以緩存。

  • 如何減少這個數字? 怎么加快?

Doctrine可以選擇編譯所需的文件 ,這對於生產服務器和應用程序的最終版本來說似乎非常合理。

我的計划是編譯其他庫(我已經刪除了所有require_once的)。

  • 有什么工具可以完成這項任務嗎? 也許一些緩存驅動程序自動執行? 如何設置它們?

php文件包含的開銷通常可以通過操作碼緩存來解決,例如APC ,可通過pecl獲得的擴展。 操作碼緩存通常通過緩存編譯的字節碼來工作,以便讀取和解析源的開銷僅在第一個請求時產生。 這將極大地否定您的php文件上的任何源編譯的需要或好處。

最好的選擇是使用APC或Zend_Accelerator。 但是你仍然可以制作這些將類合並為一個文件的“編譯”腳本。 這將所需的IO降至最低。 不幸的是,您還需要重寫自動加載過程,以便它查找適當的文件。 您通常可以將公共類壓縮在一起(Zend_Form + Elements + Decorators,常用驗證器,Request + Response + Router + Controller,Zend_Db + adapter + Zend_Db_Select等)。 主要是每個請求總是使用的類可以很容易地壓縮並手動包含在一個文件中。 最好的方法是添加調試調用,將所有包含的文件( http://www.php.net/get_included_files )保存到DB中,然后:

SELECT * FROM files GROUP BY filename WHERE COUNT(filename) = $numOfRequests

結果中的所有文件都可以安全地合並到一個文件中,並在bootstraping之前包含:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM