- <?php
- //開(kāi)啟調試模式
- define('APP_DEBUG', true);
- //加載框架入口文件
- require './ThinkPHP/ThinkPHP.php';
復制代碼在完成開(kāi)發(fā)階段部署到生產(chǎn)環(huán)境后,只需要刪除調試模式定義代碼即可切換到部署模式。 調試模式的優(yōu)勢在于:- 'APP_STATUS' => 'debug', //應用調試模式狀態(tài)
復制代碼如果檢測到項目的配置目錄中有存在debug.php文件,則會(huì )自動(dòng)加載該配置文件,并且和系統項目配置文件以及系統調試配置文件合并,也就是說(shuō),debug.php配置文件只需要配置和項目配置文件以及系統調試配置文件不同的參數或者新增的參數。 如果想在調試模式下面增加應用狀態(tài),例如測試狀態(tài),則可以在項目配置文件中改變設置如下:- 'APP_STATUS' => 'test', //應用調試模式狀態(tài)
復制代碼這樣的話(huà),系統會(huì )自動(dòng)嘗試加載項目配置目錄下面的test.php 配置文件,可以在test配置文件中改變相關(guān)設置,例如改變測試數據庫的連接信息等等。- 'SHOW_PAGE_TRACE' =>true, // 顯示頁(yè)面Trace信息
復制代碼該參數默認為關(guān)閉,開(kāi)啟后并且你的頁(yè)面有模板輸出的話(huà),頁(yè)面右下角會(huì )顯示ThinkPHP的LOGO:

- 'TRACE_PAGE_TABS'=>array(
- 'base'=>'基本',
- 'file'=>'文件',
- 'think'=>'流程',
- 'error'=>'錯誤',
- 'sql'=>'SQL',
- 'debug'=>'調試'
- )
復制代碼也就是我們看到的默認情況下顯示的選項卡,如果你希望增加新的選項卡:用戶(hù),則可以修改配置如下:- 'TRACE_PAGE_TABS'=>array(
- 'base'=>'基本',
- 'file'=>'文件',
- 'think'=>'流程',
- 'error'=>'錯誤',
- 'sql'=>'SQL',
- 'debug'=>'調試',
- 'user'=>'用戶(hù)'
- )
復制代碼也可以把某幾個(gè)選項卡合并,例如:- 'TRACE_PAGE_TABS'=>array(
- 'base'=>'基本',
- 'file'=>'文件',
- 'think'=>'流程',
- 'error|debug|sql'=>'調試',
- 'user'=>'用戶(hù)'
- )
復制代碼我們把剛才的用戶(hù)信息調試輸出到用戶(hù)選項卡,trace方法的用法如下:- trace($user,'用戶(hù)信息','user');
復制代碼第三個(gè)參數表示選項卡的標識,和我們在TRACE_PAGE_TABS中配置的對應。- 'PAGE_TRACE_SAVE'=>true
復制代碼開(kāi)啟頁(yè)面trace信息保存后,每次的頁(yè)面Trace信息會(huì )以日志形式保存到項目的日志目錄中,命名格式是: 當前日期_trace.log,例如:- 12-06-21_trace.log
復制代碼如果不希望保存所有的選項卡的信息,可以設置需要保存的選項卡,例如:- 'PAGE_TRACE_SAVE'=>array('base','file','sql');
復制代碼設置后只會(huì )保存base、file和sql三個(gè)選項卡的信息。- $info = '測試信息';
- trace($info,'提示');
復制代碼如果希望把變量調試輸出到頁(yè)面Trace的某個(gè)選項卡里面,可以使用:- trace($info,'提示','user');
復制代碼表示輸出到user選項卡,如果沒(méi)有指定選項卡的話(huà),默認會(huì )輸出到debug選項卡。- 'TRACE_EXCEPTION'=>true
復制代碼的話(huà),- trace($info,'錯誤','ERR');
復制代碼會(huì )拋出異常。- 'ERR' // 一般錯誤: 一般性錯誤
- 'WARN' // 警告性錯誤: 需要發(fā)出警告的錯誤
- 'NOTIC' // 通知: 程序可以運行但是還不夠完美的錯誤
- 'INFO' // 信息: 程序輸出信息
- 'DEBUG' // 調試: 調試信息
- 'SQL' // SQL:SQL語(yǔ)句
復制代碼- $Blog = D("Blog");
- $blog = $Blog->find(3);
- dump($blog);
復制代碼在瀏覽器輸出的結果是:- array(12) {
- ["id"] => string(1) "3"
- ["name"] => string(0) ""
- ["user_id"] => string(1) "0"
- ["cate_id"] => string(1) "0"
- ["title"] => string(4) "test"
- ["content"] => string(4) "test"
- ["create_time"] => string(1) "0"
- ["update_time"] => string(1) "0"
- ["status"] => string(1) "0"
- ["read_count"] => string(1) "0"
- ["comment_count"] => string(1) "0"
- ["tags"] => string(0) ""
- }
復制代碼- G('begin');
- // ...其他代碼段
- G('end');
- // ...也許這里還有其他代碼
- // 進(jìn)行統計區間
- echo G('begin','end').'s';
復制代碼G('begin','end') 表示統計begin位置到end位置的執行時(shí)間(單位是秒),begin必須是一個(gè)已經(jīng)標記過(guò)的位置,如果這個(gè)時(shí)候end位置還沒(méi)被標記過(guò),則會(huì )自動(dòng)把當前位置標記為end標簽,輸出的結果類(lèi)似于:- 0.0056s
復制代碼默認的統計精度是小數點(diǎn)后4位,如果覺(jué)得這個(gè)統計精度不夠,還可以設置例如:- G('begin','end',6).'s';
復制代碼可能的輸出會(huì )變成:- 0.005587s
復制代碼如果你的環(huán)境支持內存占用統計的話(huà),還可以使用G方法進(jìn)行區間內存開(kāi)銷(xiāo)統計(單位為kb),例如:- echo G('begin','end','m').'kb';
復制代碼第三個(gè)參數使用m表示進(jìn)行內存開(kāi)銷(xiāo)統計,輸出的結果可能是:- 625kb
復制代碼同樣,如果end標簽沒(méi)有被標記的話(huà),會(huì )自動(dòng)把當前位置先標記位end標簽。- $blog = D("Blog");
- $vo = $blog->create();
- trace($vo,'create vo');
- $vo = $blog->find();
- trace($vo,'find vo');
復制代碼- halt($msg) //輸出錯誤信息,并中止執行
復制代碼- $User = M("User"); // 實(shí)例化User對象
- $User->find(1);
- echo $User->getLastSql();
復制代碼輸出結果是- SELECT * FROM think_user WHERE id = 1
復制代碼并且每個(gè)模型都使用獨立的最后SQL記錄,互不干擾,但是可以用空模型的getLastSql方法獲取全局的最后SQL記錄。- $User = M("User"); // 實(shí)例化User模型
- $Info = M("Info"); // 實(shí)例化Info模型
- $User->find(1);
- $Info->find(2);
- echo M()->getLastSql();
- echo $User->getLastSql();
- echo $Info->getLastSql();
復制代碼輸出結果是- SELECT * FROM think_info WHERE id = 2
- SELECT * FROM think_user WHERE id = 1
- SELECT * FROM think_info WHERE id = 2
復制代碼getLastSql方法只能獲取最后執行的sql記錄,如果需要了解更多的SQL日志,可以通過(guò)查看當前的頁(yè)面Trace或者日志文件。聯(lián)系客服