調(diào)優(yōu)LAMP應(yīng)用程序的5種簡單方法:管理require和include
調(diào)優(yōu)LAMP 應(yīng)用程序的5 種簡單方法:
簡介
Wikipedia、Facebook 和 Yahoo! 等主要 web 屬性使用 LAMP 架構(gòu)來為每天數(shù)百萬的請求提供服務(wù),而 Wordpress、Joomla、Drupal 和 SugarCRM 等 web 應(yīng)用程序軟件使用其架構(gòu)來讓組織輕松部署基于 web 的應(yīng)用程序。
該架構(gòu)的優(yōu)勢在于其簡單性。而 .NET 這樣的堆棧和 Java™ 技術(shù)可能使用大量硬件、昂貴的軟件棧和復(fù)雜的性能調(diào)優(yōu),LAMP 堆??梢赃\(yùn)行于商品硬件之上,使用開源軟件棧。由于軟件棧是一個(gè)松散的組件集,而非一個(gè)整體堆棧,性能調(diào)優(yōu)是一大挑戰(zhàn),因?yàn)樾枰治龊驼{(diào)優(yōu)每個(gè)組件。
然而,這有幾個(gè)個(gè)簡單性能任務(wù)會(huì)對任何規(guī)模的網(wǎng)站的性能產(chǎn)生巨大的影響。在本文中,我們將探討旨在優(yōu)化 LAMP 應(yīng)用程序性能的 5 個(gè)這樣的任務(wù)。這些項(xiàng)目應(yīng)當(dāng)很少需要對您的應(yīng)用程序進(jìn)行架構(gòu)更改,使其成為***化您的 web 應(yīng)用程序所需的響應(yīng)能力和硬件需求的安全、便捷的選擇。
管理require和include
從性能來看,文件狀態(tài)調(diào)用(即為檢查一個(gè)文件是否存在而對底層文件系統(tǒng)進(jìn)行的調(diào)用)相當(dāng)昂貴。文件狀態(tài)的***元兇之一以 require() 和 include() 語句的形式出現(xiàn),這兩個(gè)語句用于將代碼帶到腳本中。require_once() 和 include_once() 的同級調(diào)用更成問題,因?yàn)樗鼈儾粌H需要驗(yàn)證文件是否存在,而且它之前沒有包含在內(nèi)。
那么解決這個(gè)問題的***方式是什么?您可以做一些事來加快解決。
•為所有 require() 和 include() 調(diào)用使用絕對路徑。這將使 PHP 更清楚您希望包含的確切文件,因此無需為您的文件檢查整個(gè) include_path。
•保持 include_path 中的條目數(shù)較低。這在很難為每個(gè) require() 和 include() 調(diào)用提供絕對路徑的情況(通常在大型遺留應(yīng)用程序中會(huì)出現(xiàn)這種情況)下很有用,方法就是不檢查您包含的文件不在的位置。
APC 和 Wincache 還有用于緩存 PHP 進(jìn)行的文件狀態(tài)檢查結(jié)果的機(jī)制,因此無需進(jìn)行反復(fù)的文件系統(tǒng)檢查。當(dāng)您將 include 文件名保留為靜態(tài)而非變量驅(qū)動(dòng)的時(shí),它們最有效,因此盡可能嘗試這樣做很有用。
本節(jié)講述的是:管理require和include、下一節(jié):優(yōu)化數(shù)據(jù)庫