程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中include include_once require require_once性能比較詳解

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

編輯:關於PHP編程

文章利用圖文詳細的介紹了在php中關於include與include_once和require與require_once性能圖,有需要的朋友可以詳細的看看,但總體來講include_once和require_once性能要好很多,特別是在多次調用時。

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()函數加載文件的執行時間

php-include.png
圖解:使 用include()函數加載文件的平均執行時間為0.0013秒左右

2,使用include_once()函數加載文件的執行時間
php-include_once.png
圖解:使用include_once()函數加載文件的平均執行時間為0.0011-0.0012秒

3,使用require函數加載文件的執行時間
php-require.png
圖解:使用require()函數加載文件的平均執行時間為0.0012-0.0013秒

4,使用require_once()函數加載文件的執行 時間
php-require_once.png
解:使用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()應該用於在腳本執行期間同一個文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變量重新賦值等問題。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved