欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ThinkPHP3.1快速入門(mén)(7)調試
本篇我們來(lái)全面了解下如何在ThinkPHP開(kāi)發(fā)過(guò)程中進(jìn)行調試工作。

調試模式

說(shuō)到調試,我們可能第一個(gè)想到的就是調試模式,沒(méi)錯,ThinkPHP也有專(zhuān)門(mén)為開(kāi)發(fā)過(guò)程而設置的調試模式,ThinkPHP的調試模式與眾不同,會(huì )犧牲一定的執行效率,但帶來(lái)的方便和除錯功能非常值得。 我們強烈建議ThinkPHP開(kāi)發(fā)人員在開(kāi)發(fā)階段始終開(kāi)啟調試模式(直到正式部署后關(guān)閉調試模式),方便及時(shí)發(fā)現隱患問(wèn)題和分析、解決問(wèn)題。[-more-]
開(kāi)啟調試模式很簡(jiǎn)單,只需要在入口文件中增加一行常量定義代碼:
  1. <?php
  2. //開(kāi)啟調試模式
  3. define('APP_DEBUG', true);
  4. //加載框架入口文件
  5. require './ThinkPHP/ThinkPHP.php';
復制代碼
在完成開(kāi)發(fā)階段部署到生產(chǎn)環(huán)境后,只需要刪除調試模式定義代碼即可切換到部署模式。 調試模式的優(yōu)勢在于:
  • 開(kāi)啟日志記錄,任何錯誤信息和調試信息都會(huì )詳細記錄,便于調試;
  • 關(guān)閉模板緩存,模板修改可以即時(shí)生效;
  • 記錄SQL日志,方便分析SQL;
  • 關(guān)閉字段緩存,數據表字段修改不受緩存影響;
  • 嚴格檢查文件大小寫(xiě)(即使是Windows平臺),幫助你提前發(fā)現Linux部署問(wèn)題;
  • 可以方便用于開(kāi)發(fā)過(guò)程的不同階段,包括開(kāi)發(fā)、測試和演示等任何需要的情況,不同的應用模式可以配置獨立的項目配置文件;
在開(kāi)啟調試模式的狀態(tài)下,我們可以給項目設置不同的應用狀態(tài),并加載不同的項目配置文件,但是無(wú)論如何,都會(huì )首先導入框架默認的調試模式配置文件,該文件位于系統目錄的Conf\debug.php。
通常情況下,調試配置文件里面可以進(jìn)行一些開(kāi)發(fā)模式所需要的配置。例如,配置額外的數據庫連接用于調試,開(kāi)啟日志寫(xiě)入便于查找錯誤信息、開(kāi)啟頁(yè)面Trace輸出更多的調試信息等等。
如果沒(méi)有配置應用狀態(tài),系統默認則默認為debug狀態(tài),也就是說(shuō)默認的配置參數是:
  1.  'APP_STATUS' => 'debug', //應用調試模式狀態(tài)
復制代碼
如果檢測到項目的配置目錄中有存在debug.php文件,則會(huì )自動(dòng)加載該配置文件,并且和系統項目配置文件以及系統調試配置文件合并,也就是說(shuō),debug.php配置文件只需要配置和項目配置文件以及系統調試配置文件不同的參數或者新增的參數。 如果想在調試模式下面增加應用狀態(tài),例如測試狀態(tài),則可以在項目配置文件中改變設置如下:
  1.     'APP_STATUS' => 'test', //應用調試模式狀態(tài)
復制代碼
這樣的話(huà),系統會(huì )自動(dòng)嘗試加載項目配置目錄下面的test.php 配置文件,可以在test配置文件中改變相關(guān)設置,例如改變測試數據庫的連接信息等等。
由于調試模式?jīng)]有任何緩存,因此涉及到較多的文件IO操作和模板實(shí)時(shí)編譯,所以在開(kāi)啟調試模式的情況下,性能會(huì )有一定的下降,但不會(huì )影響部署模式的性能。另外需要注意的是,一旦關(guān)閉調試模式,項目的調試配置文件即刻失效。

頁(yè)面Trace

調試模式并不能完全滿(mǎn)足我們調試的需要,有時(shí)候我們需要手動(dòng)的輸出一些調試信息。除了本身可以借助一些開(kāi)發(fā)工具進(jìn)行調試外,ThinkPHP還提供了一些內置的調試工具和函數。例如,頁(yè)面Trace功能就是ThinkPHP提供給開(kāi)發(fā)人員的一個(gè)用于開(kāi)發(fā)調試的輔助工具??梢詫?shí)時(shí)顯示當前頁(yè)面的操作的請求信息、運行情況、SQL執行、錯誤提示等,并支持自定義顯示。 頁(yè)面Trace功能對調試模式和部署模式都有效,不過(guò)只能用于有頁(yè)面輸出的情況(如果你的操作沒(méi)有任何輸出,那么可能頁(yè)面Trace功能對你幫助不大,你可能需要使用后面的調試方法)。但是在部署模式下面,顯示的調試信息沒(méi)有調試模式完整,通常我們建議頁(yè)面Trace配合調試模式一起使用。
要開(kāi)啟頁(yè)面Trace功能,需要在項目配置文件中設置:
  1. 'SHOW_PAGE_TRACE' =>true, // 顯示頁(yè)面Trace信息
復制代碼
該參數默認為關(guān)閉,開(kāi)啟后并且你的頁(yè)面有模板輸出的話(huà),頁(yè)面右下角會(huì )顯示ThinkPHP的LOGO:

我們看到的LOGO后面的數字就是當前頁(yè)面的執行時(shí)間(單位是秒) 點(diǎn)擊該圖標后,會(huì )展開(kāi)詳細的頁(yè)面Trace信息,如圖:

頁(yè)面Trace框架有6個(gè)選項卡,分別是基本、文件、流程、錯誤、SQL和調試,點(diǎn)擊不同的選項卡會(huì )切換到不同的Trace信息窗口。
基本:當前頁(yè)面的基本摘要信息,例如執行時(shí)間、內存開(kāi)銷(xiāo)、文件加載數、查詢(xún)次數等等。
文件:詳細列出當前頁(yè)面執行過(guò)程中加載的文件及其大小。
流程:會(huì )列出當前頁(yè)面執行到的行為和相關(guān)流程(待完善)。
錯誤:當前頁(yè)面執行過(guò)程中的一些錯誤信息,包括警告錯誤。
SQL:當前頁(yè)面執行到的SQL語(yǔ)句信息。
調試:開(kāi)發(fā)人員在程序中進(jìn)行的調試輸出。
頁(yè)面Trace的選項卡是可以定制和擴展的,默認的配置為:
  1. 'TRACE_PAGE_TABS'=>array(
  2.     'base'=>'基本',
  3.     'file'=>'文件',
  4.     'think'=>'流程',
  5.     'error'=>'錯誤',
  6.     'sql'=>'SQL',
  7.     'debug'=>'調試'
  8. )
復制代碼
也就是我們看到的默認情況下顯示的選項卡,如果你希望增加新的選項卡:用戶(hù),則可以修改配置如下:
  1. 'TRACE_PAGE_TABS'=>array(
  2.     'base'=>'基本',
  3.     'file'=>'文件',
  4.     'think'=>'流程',
  5.     'error'=>'錯誤',
  6.     'sql'=>'SQL',
  7.     'debug'=>'調試',
  8.     'user'=>'用戶(hù)'
  9. )
復制代碼
也可以把某幾個(gè)選項卡合并,例如:
  1. 'TRACE_PAGE_TABS'=>array(
  2.     'base'=>'基本',
  3.     'file'=>'文件',
  4.     'think'=>'流程',
  5.     'error|debug|sql'=>'調試',
  6.     'user'=>'用戶(hù)'
  7. )
復制代碼
我們把剛才的用戶(hù)信息調試輸出到用戶(hù)選項卡,trace方法的用法如下:
  1. trace($user,'用戶(hù)信息','user');
復制代碼
第三個(gè)參數表示選項卡的標識,和我們在TRACE_PAGE_TABS中配置的對應。
默認情況下,頁(yè)面Trace窗口顯示的信息是不會(huì )保存的,如果希望保存這些trace信息,我們可以配置PAGE_TRACE_SAVE參數:
  1. 'PAGE_TRACE_SAVE'=>true
復制代碼
開(kāi)啟頁(yè)面trace信息保存后,每次的頁(yè)面Trace信息會(huì )以日志形式保存到項目的日志目錄中,命名格式是: 當前日期_trace.log,例如:
  1. 12-06-21_trace.log
復制代碼
如果不希望保存所有的選項卡的信息,可以設置需要保存的選項卡,例如:
  1. 'PAGE_TRACE_SAVE'=>array('base','file','sql');
復制代碼
設置后只會(huì )保存base、file和sql三個(gè)選項卡的信息。

Trace方法

頁(yè)面Trace只能用于有頁(yè)面輸出的情況,但是trace方法可以用在任何情況,而且trace方法可以用于A(yíng)JAX等操作。
Trace方法的格式: trace('變量','標簽','級別','是否記錄日志') 例如:
  1. $info = '測試信息';
  2. trace($info,'提示');
復制代碼
如果希望把變量調試輸出到頁(yè)面Trace的某個(gè)選項卡里面,可以使用:
  1. trace($info,'提示','user');
復制代碼
表示輸出到user選項卡,如果沒(méi)有指定選項卡的話(huà),默認會(huì )輸出到debug選項卡。
trace方法也可以直接拋出異常,如果是輸出到ERR選項卡,并且開(kāi)啟
  1. 'TRACE_EXCEPTION'=>true
復制代碼
的話(huà),
  1. trace($info,'錯誤','ERR');
復制代碼
會(huì )拋出異常。
有三種情況下,trace方法會(huì )記錄日志:
  • AJAX請求
  • SHOW_PAGE_TRACE為false,也就是頁(yè)面Trace關(guān)閉的情況下
  • trace方法的第四個(gè)參數為true
在這種情況下,trace方法的第三個(gè)參數就表示記錄的日志級別,通常包括:
  1. 'ERR'  // 一般錯誤: 一般性錯誤
  2. 'WARN'  // 警告性錯誤: 需要發(fā)出警告的錯誤
  3. 'NOTIC'  // 通知: 程序可以運行但是還不夠完美的錯誤
  4. 'INFO'  // 信息: 程序輸出信息
  5. 'DEBUG'  // 調試: 調試信息
  6. 'SQL'  // SQL:SQL語(yǔ)句
復制代碼

變量調試

輸出某個(gè)變量是開(kāi)發(fā)過(guò)程中經(jīng)常會(huì )用到的調試方法,除了使用php內置的var_dump和print_r之外,ThinkPHP框架內置了一個(gè)對瀏覽器友好的var_dump方法,用于輸出變量的信息到瀏覽器查看。
dump 瀏覽器友好的變量輸出
用法 dump($var, $echo=true, $label=null, $strict=true)
參數 var(必須):要輸出的變量,支持所有變量類(lèi)型
echo(可選):是否直接輸出,默認為true,如果為false則返回但不輸出
label(可選):變量輸出的label標識,默認為空
strict(可選):輸出變量類(lèi)型,默認為true,如果為false則采用print_r輸出
返回值 如果echo參數為false 則返回要輸出的字符串
使用示例:
  1. $Blog = D("Blog");
  2. $blog = $Blog->find(3);
  3. dump($blog);
復制代碼
在瀏覽器輸出的結果是:
  1. array(12) {
  2.   ["id"]           => string(1) "3"
  3.   ["name"]         => string(0) ""
  4.   ["user_id"]       => string(1) "0"
  5.   ["cate_id"]   => string(1) "0"
  6.   ["title"]        => string(4) "test"
  7.   ["content"]      => string(4) "test"
  8.   ["create_time"]        => string(1) "0"
  9.   ["update_time"]        => string(1) "0"
  10.   ["status"]       => string(1) "0"
  11.   ["read_count"]    => string(1) "0"
  12.   ["comment_count"] => string(1) "0"
  13.   ["tags"]         => string(0) ""
  14. }
復制代碼

性能調試

開(kāi)發(fā)過(guò)程中,有些時(shí)候為了測試性能,經(jīng)常需要調試某段代碼的運行時(shí)間或者內存占用開(kāi)銷(xiāo),系統提供了G方法可以很方便的獲取某個(gè)區間的運行時(shí)間和內存占用情況。 例如:
  1. G('begin');
  2. // ...其他代碼段
  3. G('end');
  4. // ...也許這里還有其他代碼
  5. // 進(jìn)行統計區間
  6. 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)似于:
  1. 0.0056s
復制代碼
默認的統計精度是小數點(diǎn)后4位,如果覺(jué)得這個(gè)統計精度不夠,還可以設置例如:
  1. G('begin','end',6).'s';
復制代碼
可能的輸出會(huì )變成:
  1. 0.005587s
復制代碼
如果你的環(huán)境支持內存占用統計的話(huà),還可以使用G方法進(jìn)行區間內存開(kāi)銷(xiāo)統計(單位為kb),例如:
  1. echo G('begin','end','m').'kb';
復制代碼
第三個(gè)參數使用m表示進(jìn)行內存開(kāi)銷(xiāo)統計,輸出的結果可能是:
  1. 625kb
復制代碼
同樣,如果end標簽沒(méi)有被標記的話(huà),會(huì )自動(dòng)把當前位置先標記位end標簽。
如果環(huán)境不支持內存統計,則該參數無(wú)效,仍然會(huì )進(jìn)行區間運行時(shí)間統計。

斷點(diǎn)調試

憑借強大的頁(yè)面Trace信息功能支持,ThinkPHP可以支持斷點(diǎn)調試功能。
我們只需要在不同的位置對某個(gè)變量進(jìn)行trace輸出即可,例如:
  1. $blog = D("Blog");
  2. $vo = $blog->create();
  3. trace($vo,'create vo');
  4. $vo = $blog->find();
  5. trace($vo,'find vo');
復制代碼

錯誤調試

如果需要我們可以使用下面的方法輸出錯誤信息并中斷執行:
  1. halt($msg)  //輸出錯誤信息,并中止執行
復制代碼

模型調試

在模型操作中 ,為了更好的查明錯誤,經(jīng)常需要查看下最近使用的SQL語(yǔ)句,我們可以用getLastsql方法來(lái)輸出上次執行的sql語(yǔ)句。例如:
  1. $User = M("User"); // 實(shí)例化User對象
  2. $User->find(1);
  3. echo $User->getLastSql();
復制代碼
輸出結果是
  1. SELECT * FROM think_user WHERE id = 1
復制代碼
并且每個(gè)模型都使用獨立的最后SQL記錄,互不干擾,但是可以用空模型的getLastSql方法獲取全局的最后SQL記錄。
  1. $User = M("User"); // 實(shí)例化User模型
  2. $Info = M("Info"); // 實(shí)例化Info模型
  3. $User->find(1);
  4. $Info->find(2);
  5. echo M()->getLastSql();
  6. echo $User->getLastSql();
  7. echo $Info->getLastSql();
復制代碼
輸出結果是
  1. SELECT * FROM think_info  WHERE id = 2
  2. SELECT * FROM think_user  WHERE id = 1
  3. SELECT * FROM think_info  WHERE id = 2
復制代碼
getLastSql方法只能獲取最后執行的sql記錄,如果需要了解更多的SQL日志,可以通過(guò)查看當前的頁(yè)面Trace或者日志文件。

注意:Mongo數據庫驅動(dòng)由于接口的特殊性,不存在執行SQL的概念,因此SQL日志記錄功能是額外封裝實(shí)現的,所以出于性能考慮,只有在開(kāi)啟調試模式的時(shí)候才支持使用getLastSql方法獲取最后執行的SQL記錄。
AD:還在“找”工作? OUT啦,現在流行拍賣(mài)自己,點(diǎn)擊查看詳情
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Hibernate打印SQL及附加參數(log4j配置)
PHP教程 54 - ThinkPHP(1)
增加asp.net應用程序性能的20種方法(簡(jiǎn)單有效)
ThinkPHP 框架執行流程分析
在 .NET 程序中啟用調試信息輸出
C#調試入門(mén)篇
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久