麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > PHP > 正文

ThinkPHP教程_PHP框架之ThinkPHP(四)調(diào)試模式與日志記

2020-03-24 18:55:55
字體:
供稿:網(wǎng)友
  • 一、調(diào)試模式

      開啟調(diào)試模式后,可以看到更加詳細(xì)的錯(cuò)誤信息,調(diào)試模式的作用的在于顯示或者記錄更多的日志信息,以便在開發(fā)過程中快速定位和解決問題

      只需要在項(xiàng)目配置文件中添加一個(gè)'APP_DEBUG'=>true,即可開啟

      1、開啟調(diào)試模式后,系統(tǒng)在運(yùn)行時(shí)會(huì)首先檢查是否定義了項(xiàng)目調(diào)試配置文件,如果沒有定義則使用系統(tǒng)調(diào)試配置文件(這是ThinkPHP為我們定義好的),系統(tǒng)調(diào)試配置文件為系統(tǒng)目錄->Common->debug.php文件

      

      2、在系統(tǒng)調(diào)試配置文件中,'DB_FIELDS_CACHE'=>false 即關(guān)閉數(shù)據(jù)表字段緩存,因?yàn)樵谡{(diào)試模式下考慮到數(shù)據(jù)表結(jié)構(gòu)會(huì)經(jīng)常變動(dòng),所以默認(rèn)只要開啟調(diào)試模式就關(guān)閉數(shù)據(jù)表字段緩存

      所謂數(shù)據(jù)表字段緩存,就是ThinkPHP會(huì)將整個(gè)應(yīng)用所涉及的表的結(jié)構(gòu)都緩存到應(yīng)用目錄->Runtime->Data->_files目錄中,每張表對(duì)應(yīng)一個(gè)php文件,文件名就是表名,文件內(nèi)容是一個(gè)記錄該表字段信息的數(shù)組!也就是說如果開啟了該緩存,那么在直接對(duì)數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)進(jìn)行的修改是不會(huì)反映到表結(jié)構(gòu)緩存文件的,而在用Model對(duì)表進(jìn)行操作的時(shí)時(shí)是根據(jù)表結(jié)構(gòu)緩存文件中的結(jié)構(gòu)信息來的,所以會(huì)導(dǎo)致比如新加的一個(gè)字段插入不進(jìn)去數(shù)據(jù)的問題

      關(guān)于數(shù)據(jù)表結(jié)構(gòu)緩存,這里有一個(gè)鏈接

      3、項(xiàng)目調(diào)試配置文件

      在應(yīng)用目錄->Config目錄下新建一個(gè)debug.php文件,內(nèi)容格式按照系統(tǒng)調(diào)試配置文件,最好是將系統(tǒng)調(diào)試配置文件的內(nèi)容copy過來,然后再對(duì)其進(jìn)行刪除、增加或修改

      不管是否開啟調(diào)試模式,都會(huì)加載項(xiàng)目配置文件(顯然是的,不先加載項(xiàng)目配置文件,怎么知道是否開啟了調(diào)試模式呢?對(duì)吧),如果沒有開啟調(diào)試模式則不會(huì)加載調(diào)試配置文件(系統(tǒng)/項(xiàng)目調(diào)試配置文件)的,而且調(diào)試配置文件(系統(tǒng)/項(xiàng)目)會(huì)覆蓋項(xiàng)目配置文件中的相同項(xiàng)!

      文件加載順序(很重要)如下

      系統(tǒng)配置文件---》項(xiàng)目配置文件---》系統(tǒng)調(diào)試配置文件 PS,注意,要么是加載系統(tǒng)調(diào)試配置文件,要么加載項(xiàng)目調(diào)試配置文件,并不會(huì)像配置文件

                     ---》項(xiàng)目調(diào)試配置文件       那樣,首先加載系統(tǒng)配置文件再加載項(xiàng)目配置文件

      4、運(yùn)行狀態(tài)

      開啟調(diào)試模式后,默認(rèn)會(huì)顯示頁(yè)面的運(yùn)行狀態(tài)信息,包括運(yùn)行時(shí)間、數(shù)據(jù)庫(kù)讀寫次數(shù)、緩存讀寫次數(shù)、內(nèi)存開銷,例如

      

      而運(yùn)行狀態(tài)信息并非必須得在調(diào)試模式下才能顯示,也是可以直接在項(xiàng)目配置文件中進(jìn)行單獨(dú)配置的,可以配置一項(xiàng)或多項(xiàng)

      

      注意,這些信息默認(rèn)是在模板的最后顯示的,但是如果你希望在模板其它地方顯示,那么可以通過將{__RUNTIME__}等等模板系統(tǒng)變量放到指定的位置顯示

      5、頁(yè)面Trace

      頁(yè)面Trace是ThinkPHP用于開發(fā)調(diào)試的輔助手段,在系統(tǒng)調(diào)試配置文件中是默認(rèn)開啟的

      

        ·默認(rèn)的Trace信息包括如下項(xiàng)

        

        ·還可以自定義Trace信息

        方式一:在應(yīng)用目錄->Config目錄下新建一個(gè)trace.php文件,內(nèi)容格式與項(xiàng)目配置文件一樣(返回一個(gè)Aarry),比如

        

        

        方式二:在動(dòng)作內(nèi)通過trace()方法來增加trace信息

        

        

      Trace模板也是可以自定義的,上面所說的是自定義Trace信息,在自定義的Trace模板中的關(guān)鍵性代碼如下

      

      默認(rèn)的Trace模板是系統(tǒng)目錄->Tpl目錄->PageTrace.tpl.php文件,通過在項(xiàng)目配置文件中的'TMPL_TRACE_FILE'配置項(xiàng)進(jìn)行配置,比如說'TMPL_TRACE_FILE'=>APP_PATH.'/Public/trace.php',那么項(xiàng)目目錄->Public目錄->trace.php文件就是自定義的Trace模板

      6、手動(dòng)輸出調(diào)試信息(Action調(diào)試)

      有時(shí)候調(diào)試模式并不能完全滿足我們的需求,而需要手動(dòng)輸出一些調(diào)試信息

        ·手動(dòng)輸出變量信息

        除了使用PHP內(nèi)置的var_dump()函數(shù)和print_r()函數(shù)之外,還可以使用ThinkPHP提供的對(duì)瀏覽器更加友好的dump()函數(shù)

        ·獲取某代碼段的運(yùn)行狀態(tài)

        debug_start($label='')和debug_end($label='')函數(shù),比如說

        

        

        ·中斷程序執(zhí)行并輸出相關(guān)信息

        halt($mes);輸出錯(cuò)誤信息并終止程序執(zhí)行

      7、模型調(diào)試(Model調(diào)試)

      在模型中,為了更好的查明錯(cuò)誤,經(jīng)常需要查看下最近使用的sql語句,那么ThinkPHP就提供了getLastsql()方法來輸出上次執(zhí)行的sql語句

      

      輸出結(jié)果為SELECT * FROM think_user WHERE id = 1

      8、調(diào)試類

      更加高級(jí)的調(diào)試方式是使用調(diào)試類Debug,分別有三個(gè)靜態(tài)方法mark()、useTime()、useMemory(),作用分別為標(biāo)記一個(gè)調(diào)試位置、返回區(qū)間所用時(shí)間、返回區(qū)間所用內(nèi)存,測(cè)試如下

      

      

      實(shí)際上,細(xì)心的同學(xué)可能發(fā)現(xiàn)用debug_start()和debug_end()所測(cè)試的相同代碼,在執(zhí)行時(shí)間和使用內(nèi)存上更小

      注意一下,通過Debug類的源碼可知,useTime()實(shí)際上還有第三個(gè)參數(shù)

      

    二、日志記錄

      日志的處理工作是由系統(tǒng)自動(dòng)完成的,在開啟日志記錄的情況下,會(huì)記錄允許的日志級(jí)別的所有日志信息。其中SQL級(jí)別日志只有在調(diào)試模式開啟時(shí)才有效!

      系統(tǒng)的日志記錄由核心的Log類完成,提供了多種方式記錄下不同的級(jí)別的日志信息

      1、開啟日志記錄

      在項(xiàng)目配置文件中,添加'LOG_RECORD'=>true即可開啟日志記錄。一般在開啟日志記錄之后,緊接著要指定運(yùn)行記錄的日志級(jí)別,通過'LOG_RECORD_LEVEL'=>array('日志級(jí)別',...)

      2、日志級(jí)別

      

      ps,在項(xiàng)目配置文件中指定日志級(jí)別的時(shí)候,填的是字串而不是常量名

      3、日志記錄方式(自動(dòng)記錄)

        SYSTEM  通過發(fā)送到PHP的系統(tǒng)日志目錄    Log類中對(duì)應(yīng)的常量名值是0

        MAIL    通過郵件方式發(fā)送                      1

        TCP    通過TCP方式發(fā)送 2

        FILE    通過文件方式記錄(默認(rèn)方式) 3

      FILE方式的html' target='_blank'>文件格式

      年(簡(jiǎn)寫)_月_日.log比如16_08_23.log表示2016年8月23日的日志文件

      這里所說的都是自動(dòng)記錄日志,自動(dòng)記錄的日志會(huì)保存到應(yīng)用目錄->Runtime目錄->Logs目錄->年(簡(jiǎn)寫)_月_日.log文件中

        ·可以通過LOG_FILE_SIZE來限制日志文件的大小,超過大小的日志文件就會(huì)形成備份文件,備份文件的格式是在當(dāng)前文件名的前面加上備份的時(shí)間戳,例如1189571417-07_09_12.log

        ·日志文件的內(nèi)容格式是[時(shí)間]日志級(jí)別:日志信息

        ·時(shí)間顯示格式可動(dòng)態(tài)配置,默認(rèn)采用的[c],可以改成例如Log::format='[Y-m-d H:i:s]',ps,格式與date()函數(shù)的用法一致

      4、手動(dòng)記錄

      通常日志文件的寫入都是自動(dòng)完成的,如果需要在開發(fā)的過程中手動(dòng)記錄日志信息,可以通過Log類來實(shí)現(xiàn)

      有兩種方式

      方式一:直接使用Log::write()方法一步到位

      

      方式二:先使用Log::record()方法將日志寫入到內(nèi)存中,然后再用Log::save()方法將內(nèi)存中的日志寫到磁盤中

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 午夜爽爽爽男女免费观看hd | 日本看片一区二区三区高清 | 国产高清一区 | 免费黄色在线电影 | 九九综合视频 | 日本高清黄色片 | 欧美亚洲一级 | www.91视频com| 日本中文高清 | 毛片在线免费观看网址 | 搜一级毛片 | 国产日韩线路一线路二 | 免费一级毛片在线播放视频老 | 欧美一级淫片免费视频1 | 成人免费毛片片v | 国产免费激情视频 | 久久精品成人 | 国产免费视频在线 | 一区二区三区日韩在线观看 | wwwxxx免费视频 | 黄色大片高清 | 高清中文字幕在线 | 香蕉视频1024 | 久久久精品精品 | 久久伊| 国产免费传媒av片在线 | 亚洲人成中文字幕在线观看 | 国产一区二区免费在线观看视频 | 亚洲人成网站免费播放 | 欧美黄色片免费看 | 免费久久久久 | 欧美一区二区三区不卡免费观看 | 日本黄色a视频 | 九草在线 | 国产一级性生活视频 | 1级毛片在线观看 | av成人在线免费观看 | 久久91亚洲人成电影网站 | 午夜视频在线观 | 激情小说激情图片激情电影 | 最污网站 |