2012-09-21 104 views
0

優化文件路徑參考方法時,包括在PHP腳本中的其他文件,什麼是web服務器更快地處理:在PHP什麼是對Web服務器

include 'http://www.mydomain.com/bin/scripts/thescript.php'; 

OR

include '/home/user/public_html/bin/scripts/thescript.php'; 

OR

include '../../scripts/thescript.php'; 

或者真的沒有實際的區別嗎?

這不是一個學術問題。如果所有三種方法實時同樣令人滿意,請告訴我。這就是我需要知道的。

回答

1

絕對值,即以「/」開始比例總是更好。這樣,如果您移動應用程序,則無需手動更新路徑名稱。我使用2個函數的組合來將絕對路徑定義爲常量。

function tsl($path) { 
    if (substr($path, strlen($path) - 1) != '/'){ 
     $path .= '/'; 
    } 
} 
function get_root_path() { 
    $pos = strrpos(dirname(__FILE__),DIRECTORY_SEPARATOR.'inc'); 
    $adm = substr(dirname(__FILE__), 0, $pos); 
    $pos2 = strrpos($adm,DIRECTORY_SEPARATOR); 
    return tsl(substr(__FILE__, 0, $pos2)); 
} 
define('ROOTPATH', get_root_path()); 

我在使用inc /在我的例子中,但是你可以改變它。這將允許您只使用常量ROOTPATH,而不是試圖找出加密路徑。

另一種方法是這樣的...

<?php 
define('ROOT_DIR', dirname(__FILE__)); 
define('ROOT_URL', substr($_SERVER['PHP_SELF'], 0, - (strlen($_SERVER['SCRIPT_FILENAME']) - strlen(ROOT_DIR)))); 
?> 

就包括在模板頁,這些定義文件。

+0

好的,以及如何爲其他文件包含此函數以使用ROOTPATH常量? – dbf

+0

編輯我的帖子。您只需確保包含這些定義的文件包含在使用它們的頁面中。我通常從index.php中調用所有的頁面,所以我只需要包含它一次。 – noel

+0

好的,所以你再也不會處理PHP文件上的AJAX請求了,包括其他PHP文件?只是好奇,這就是全部:) – dbf

0

不推薦使用方法1,因爲包含使用HTTP協議是潛在的安全漏洞,並且在大多數嚴重的託管服務器上都不允許 - 它也比較慢,因爲它會通過網絡加載。我想(方式感覺,沒有做任何基準測試)方法2和3有點相當我猜(方法2)。

方法3允許您移動PHP應用程序而無需糾正絕對路徑。

+1

如果您移動整個應用程序,您對方法3(相對路徑)的觀察是正確的。我在問這個問題b/c我正在重新部署應用程序結構中的包含文件,並且有很多路徑需要更正,因爲相對路徑已經改變。所以,我猜「這完全是相對的」,最終走到哪裏。 X ^/ – gibberish