我現在正在寫一個PHP框架。我想知道在請求期間php/include
或require_once
/include_once
文件太多會減慢嗎?做太多需求/包括減慢PHP
回答
除非您使用緩存庫,否則每次請求時都會一次又一次地包含這些文件。肯定會減慢速度。創建一個只有include
-s什麼需要是include
-ed的框架。
並使用字節碼緩存,如APC! – Niko
當然會的。多次做任何事都會導致速度減慢。
儘管更嚴重的說法是,與內存中發生的任何事情相比,接觸磁盤的IO操作都非常緩慢。因此,在使用大型框架時(包括文件和),通常會成爲主要的性能因素(只需查看Zend Framework ...)。
但是,通常有緩解這種情況的方法,如APC和類似的op代碼緩存。
有時也採用編程方法。例如,如果我沒有記錯,Doctrine 1有能力將所有東西都捆綁到1個巨型文件中,以減少IO調用。
如果有疑問,請對您的框架編寫的應用程序進行一些深入分析,看看include/require /等是否是主要的慢點之一。
是的,這會減慢您的應用程序。 *_once
調用通常比較昂貴,因爲必須檢查該文件是否已包含在內。隨着包括很多,有很多的硬盤訪問和大量的內存使用捆綁。我使用Zend Framework開發了應用程序,每次請求總共包含150到200個文件 - 您確實可以看到對整體性能的影響。
這個基準測試表明'require'和'require_once'之間的速度沒有明顯的差別:http://www.php.net/manual/en/function.require-once.php#90017 – Kaivosukeltaja
沒有明顯的區別!=沒有區別。如果基準是在一個框架上完成的(包含/需要在另一個包含/需求內)並且由足夠數量的請求啓動,那麼這可能是明智的。 – LeleDumbo
然而,主要問題是您通常會在每個文件頂部有很多'require_once'調用,包括所有必需的類。因此可能會有20次嘗試加載特定文件,其中19次會導致開銷過大。 – Niko
您包含的文件越多,將會增加一些負載。但是,如果必須在require和require_once之間進行選擇,那麼require_once/include_once會承擔更多的負載,因爲服務器需要執行檢查以查看是否在其他地方包含了相同的文件。所以如果你可以避免這種情況,至少你可以提高性能。
- 1. 許多包括減慢網站?
- 2. PHP包括慢需要2.5秒
- 3. 做出多個本地請求是否會減慢Chrome擴展?
- 4. 減慢以太網連接
- 5. Ajax請求太慢
- 6. 求解器太慢
- 7. PHP做了很多類型檢查會減慢你的代碼?
- 8. PHP:包括\要求行爲
- 9. PHP需要和包括GET
- 10. UIBezierPath太多路徑=太慢?
- 11. modelformset_factory不包括太多字段
- 12. PHP:需要/不需要包括警告
- 13. 執行代碼太快..需要減慢,但如何?
- 14. 排球請求太慢
- 15. 黑莓HTTP請求太慢
- 16. HTTP請求與HttpClient太慢?
- 17. Symfony Kernel請求太慢
- 18. doctrine2慢太多querys
- 19. [增訂]需要/包括php和穿過值到另一所需的/ PHP包括
- 20. 異步HttpClient請求減慢
- 21. 包括臨時表中的值減慢查詢
- 22. 有多少PHP包含太多?
- 23. asp.net包括javascript慢在iss
- 24. 奇怪的PHP要求/包括錯誤
- 25. PHP包括和要求不工作
- 26. PHP SOAP不包括我的請求
- 27. PHP包括或要求文件
- 28. PHP curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false)太慢
- 29. PHP - usort函數太慢
- 30. TSQL/PHP太慢 - 重寫
可能是重複的,請檢查這些帖子。 http://stackoverflow.com/questions/3589117/using-too-many-php-includes-a-bad-idea和http://stackoverflow.com/questions/2198253/will-including-unnecessary-php-files- slow-down- – verisimilitude