2011-04-28 43 views
2

我有一個PHP文件,我包括幾乎所有我稱之爲的東西。這一個include文件包含了其他幾個php文件。我使用這個文件的原因是因爲我在開發和生產服務器之間存在路徑差異,只需要包含一個文件並知道我有那些我需要的類即可。如何加快我的PHP包含?

有沒有簡單的方法來緩存文件,或東西,以加快我的加載時間?

+0

什麼樣的加載時間的差異,我們談論的?一個包含,甚至包含其他文件的包含都不應該引人注目。你是否也在同一時間實例化類?連接到數據庫? 您是否嘗試過只加載您的初始頁面而沒有包含文件以查看時間差異? – Matt 2011-04-28 14:54:24

+0

編寫一個創建「主包含」的小腳本,然後將結果寫入一個新文件,然後將其用於包含所有其他頁面?這樣你就可以做大量的包含一次。但你必須手動完成。 – pintxo 2011-04-28 14:54:56

+1

當我做一個相當簡單的AJAX請求可能需要長達3秒鐘返回時,它僅僅是拉動HTML – Jason 2011-04-28 15:22:08

回答

2

有許多方法來處理路徑的差異比不涉及每次裝載的一切。你可以,例如,定義一個常數,在所有的文件系統操作使用它作爲前綴:

define('DOC_ROOT', '/var/www/foo'); 
require_once DOC_ROOT . '/lib/bar.php'; 

或者你可以在你的系統的DOCUMENT_ROOT變量依賴(如果設置正確):

require_once $_SERVER['DOCUMENT_ROOT'] . '/lib/bar.php'; 

或者您可以使用class autoloading。或者您可以使用include_path

除此之外,PHP將始終找到解析與PHP源代碼的每一個文件,你指示它,每次運行腳本的時間。如果您安裝了opcode cache,則可以縮短第二部分。

+0

:eAccelerator在加載正確,但我必須糾正它,因爲在其中一臺服務器上,它沒有結尾斜槓,另一臺服務器卻沒有。我已經添加了類自動加載,這似乎有很大的幫助。謝謝。 – Jason 2011-04-28 15:46:40

+0

對於類自動加載,雖然對於包含* always *的類,您應該放置include語句。例如,如果一個庫類擴展了另一個庫類,則應該在文件的頂部有'require_once'(這是許多框架中的做法)。 – 2011-04-29 14:57:39

3

你可以安裝一個操作碼緩存,PHP

操作碼緩存通過緩存PHP腳本編譯的狀態下進行除PHP腳本的編譯時間優化性能到RAM中並直接從RAM使用編譯後的版本。這會增加頁面生成時間的速度。這也意味着您的文件將只包含一次。

+0

另外:我使用的是DOCUMENT_ROOT此刻讓一切http://eaccelerator.net/ – 2012-12-21 04:23:14