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

ThinkPHP 除錯技巧完整指南:DEBUG_MODE、頁面 Trace、SQL 日誌、dump()、getLastSql()、執行時間測量

     編輯:PHP 綜合知識

ThinkPHP 內建多層次除錯工具,善用可大幅提升開發效率。以下為 6 大核心除錯手段。

1. 開啟除錯模式

<?php
// 專案設定檔 Conf/config.php
return [
    'DEBUG_MODE' => true, // 或常數定義 define('DEBUG_MODE', true);
];
  • 顯示詳細錯誤堆疊、SQL 語句、模板變數等。
  • 可能影響驗證碼輸出 (輸出被攔截),需視情況關閉。

2. 獨立開啟頁面 Trace

除錯模式預設開啟 Trace,但可單獨控制:

<?php
// 專案設定檔
'SHOW_PAGE_TRACE' => true, // 顯示頁面 Trace
'TRACE_PAGE_TABS' => ['base','file','think','error','sql','debug','user'], // 顯示分頁
  • Trace 包含:執行時間、記憶體、載入檔案、SQL 語句、錯誤、自訂資訊。
  • 不想用除錯模式但要看 Trace 時,單獨開啟 SHOW_PAGE_TRACE 即可。

3. 使用 dump() 輸出變數

<?php
$User = D('User');
$list = $User->findAll();
dump($list); // 類似 var_dump 但格式化、可摺疊、顏色區分,瀏覽器友善
  • 支援任意型別,輸出 HTML 格式,開發環境極佳。

4. SQL 日誌記錄 (針對 AJAX/後台無 Trace 情況)

<?php
// 設定檔
'SQL_DEBUG_LOG' => true, // 開啟 SQL 日誌
// 日誌檔案位於 Runtime/Logs/ 目錄,按日期自動分檔 (如 2023_10_15.sql.log)
  • 記錄每條 SQL、執行時間、影響行數。
  • 適合分析 AJAX 請求、命令列腳本、API 介面的 SQL 效能。

5. getLastSql() 取得最後執行 SQL

<?php
$User = D('User');
$User->id = 3;
$User->name = 'ThinkPHP';
$User->save();
echo $User->getLastSql();
// 輸出: UPDATE think_user SET name='ThinkPHP' WHERE id=3
  • 模型實例方法,僅回傳該實例最後一次操作的 SQL。
  • 適合快速驗證 AR 操作產生的 SQL 是否符合預期。

6. 程式碼區段執行時間測量

<?php
debug_start('my_label');
// 要測量的程式碼區段
$list = $User->findAll();
foreach ($list as $item) { /* ... */ }
debug_end('my_label');
// 頁面 Trace 的 debug 分頁會顯示 my_label 的耗時
  • 可多處同時測量,標籤不可重複。
  • 結果顯示在頁面 Trace 的 debug 分頁。

進階建議

  • 生產環境務必關閉 DEBUG_MODE、SHOW_PAGE_TRACE、SQL_DEBUG_LOG。
  • 自訂除錯設定檔:Conf/debug.php 覆蓋預設行為,區分開發/測試/生產環境。
  • 結合 Xdebug 斷點除錯,實現完整開發除錯鏈路。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved