php中include include_once require require_once效能比較詳解

來源:互聯網
上載者:User

PHP效能最佳化第八期函數篇,include()與include_once()和require()與require_once()效能比較,主要是通過擷取這四個函數執行時間 比較效能差異,實驗採用Benchmark_Iterate類工具。

測試方法
載入一個已經存在的檔案exist.php,通過Benchmark_Iterate類調用50次,擷取各函數的執行時間並產生曲線圖。

測試代碼

 代碼如下 複製代碼

require_once "Benchmark/Iterate.php";
$bench = new Benchmark_Iterate;
function load_include(){
    include 'exist.php';
}
function load_require(){
    require 'exist.php';
}
function load_include_once(){
    include_once 'exist.php';
}
function load_require_once(){
    require_once 'exist.php';
}
$bench->run(50,"load_include");
//$bench->run(50,"load_require");
//$bench->run(50,"load_include_once");
//$bench->run(50,"load_require_once");
$result = $bench->get();

測試結果
1,使用include()函數負載檔案的執行時間


圖解:使 用include()函數負載檔案的平均執行時間為0.0013秒左右

2,使用include_once()函數負載檔案的執行時間

圖解:使用include_once()函數負載檔案的平均執行時間為0.0011-0.0012秒

3,使用require函數負載檔案的執行時間

圖解:使用require()函數負載檔案的平均執行時間為0.0012-0.0013秒

4,使用require_once()函數負載檔案的執行 時間

解:使用require_once()函數負載檔案的平均執行時間為0.0011-0.0012秒

由上面測試結果 可知,四個函數負載檔案的執行時間基本上差不多,區別在於,如果存在一個檔案多次載入的情況,include和require函數會載入多次,而 include_once和require_once函數只會載入一次。同時處理載入失敗的情況不同,include() 和include_once() 產生一個警告而 require() 和 require_once() 則導致一個致命錯誤。

相關說明
include()和require()函數
這兩種結構除了在如何處理失敗之外完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果想在遇到丟失檔案時停止處理頁面就用 require()。include() 就不是這樣,指令碼會繼續運行。同時也要確認設定了合適的 include_path。注意在 PHP 4.3.5 之前,包含檔案中的語法錯誤不會導致程式停止,但從此版本之後會。

尋找包含檔案的順序先是在當前工作目錄的相對的 include_path 下尋找,然後是當前運行指令碼所在目錄相對的 include_path 下尋找。例如 include_path 是 .,當前工作目錄是 /www/,指令碼中要 include 一個 include/a.php 並且在該檔案中有一句 include "b.php",則尋找 b.php 的順序先是 /www/,然後是 /www/include/。如果檔案名稱以 ./ 或者 ../ 開始,則只在當前工作目錄相對的 include_path 下尋找。

當一個檔案被包含時,其中所包含的代碼繼承了 include 所在行的變數範圍。從該處開始,調用檔案在該行處可用的任何變數在被調用的檔案中也都可用。不過所有在包含檔案中定義的函數和類都具有全域範圍。

include_once() 和require_once()函數
include_once() 和require_once()語句在指令碼執行期間包含並運行指定檔案。此行為和 include() 和require() 語句類似,唯一區別是如果該檔案中的代碼已經被包含了,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。 include_once() 和require_once()應該用於在指令碼執行期間同一個檔案有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.