首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP include 加載文件效率對比:foreach 迭代 vs 統一 include 文件

     編輯:PHP 綜合知識

兩種加載策略

策略一:字符串列表 + explode + foreach 迭代 require_once

$a = '/a.class.php;/Util/b.class.php;/Util/c.class.php';
$b = '/d.php;/e.class.php;/f.class.php;/g.class.php';

$kernel_require_files = explode(';', $a);
foreach ($kernel_require_files as $f) {
    require_once(SYS_LIB_PATH.'/System'.$f);
}

$kernel_require_files = explode(';', $b);
foreach ($kernel_require_files as $f) {
    require_once(KERNEL_PATH.$f);
}

策略二:統一 include 文件,當前頁直接 include 該文件

// include.php
require_once('func.php');
require_once('LangManager.class.php');
require_once('_KernelAutoLoader.class.php');
require_once('ApplicationSettingManager.class.php');
require_once('lib/System/Activator.class.php');
require_once('lib/System/Util/CXML.class.php');
require_once('lib/System/Util/CWeb.class.php');
// 當前頁
include_once('include.php');

策略三:直接在當前頁逐行 require_once

實測數據(10 次隨機加載平均耗時,單位:秒)

策略耗時範圍平均耗時
foreach 迭代0.0173 - 0.0208~0.0182
include_once('include.php')0.0241 - 0.0268~0.0251
直接逐行 require_once0.0223 - 0.0251~0.0235

結果分析

  • foreach 迭代最快,反直覺但數據明確
  • 統一 include 文件反而最慢,可能因額外文件讀取、解析開銷
  • 直接寫在當前頁介於兩者之間

可能原因推測

  1. opcode 緩存差異:foreach 內的 require_once 參數為變量,可能觸發不同緩存鍵;統一 include 文件路徑固定,但需額外編譯 include.php 本身
  2. 文件系統調用:統一方式多一次文件讀取
  3. 測試環境干擾:單次測試樣本小,受系統調度影響大

實際建議

  1. 生產環境務必開啟 OPcache,上述微小差異將被完全抹平
  2. 代碼組織優先考慮可維護性:模塊化、自動加載(PSR-4 + Composer)
  3. 核心框架啟動文件採用 統一 bootstrap 文件,業務層按需自動加載
  4. 避免在循環中大量 require_once,必要時合併為單文件或使用 classmap

現代最佳實踐:Composer 自動加載

// composer.json
{
    "autoload": {
        "psr-4": { "App\\": "src/" },
        "classmap": ["lib/"]
    }
}

// 入口文件只需一行
require_once __DIR__ . '/vendor/autoload.php';

結論:微優化不如架構優化。拥抱 PSR-4、Composer、OPcache,才是 PHP 性能的正道。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved