我們在熟悉新的專案了解業務的時候,可以有很多方式。看專案文件說明;和了解專案身邊的人溝通;通過自己度**除錯,但是一步步除錯列印語句或許有點慢,如果可以調出當前請求的所有語句,那麼很快可以熟悉他的業務。再或者自己開發中排查問題。
公司所用的框架是yii,由於專案比較早了,好像是13年開始的,所以我的測試版本是yii1,我所嘗試的除錯也是直接搜了很多帖子,在專案中實踐可用,應該是相容1和2版本的。
[第一種]
①修改 index.php 開啟除錯模式
//②修改配置檔案 main.phpindex.php
//開啟除錯模式
defined('
yii_debug
') or define('
yii_debug
',true
);//
設定日誌記錄級別,yii_trace_level的數字越大,資訊越清楚
defined('
yii_trace_level
') or define('
yii_trace_level
',3);
如果需要修改那麼需要在main.php裡面的components下面增加log配置,如下:
'在 yii 中,有下列幾種日誌路由可用:preload
' => array('
log'),//
這句也必須加上
cdblogroute: 將資訊儲存到資料庫的表中。
cemaillogroute: 傳送資訊到指定的 email 位址。
cfilelogroute: 儲存資訊到應用程式 runtime 目錄中的乙個檔案中。
cweblogroute: 將 資訊 顯示在當前頁面的底部。
cprofilelogroute: 在頁面的底部顯示概述(profiling)資訊。
'配置好之後,重新整理請求頁面就可以了,我這裡除錯的是api介面,所以看著比較不舒服,沒試過web頁面列印效果會不會美觀些。log'=>array(
'class
'=>'
clogrouter',
'routes
'=>array (
//log error
array (
'class
'=>'
filedailylogroute',
'levels
'=>'
error, warning',
'logfile
'=>'
api_php_error.log',
'keepdays
'=>7
,
'logpath
'=>'
/data/logs/api',
),//下面兩個陣列是我自己的配置,上面是公司專案自帶的,不必例會
//請求後在瀏覽器展示
//array (
//'class' => 'cweblogroute',
//'showinfirebug' => true,
//'ignoreajaxinfirebug' => true,
//'levels' => 'trace',
//級別為trace
//'categories' => 'system.db.*'
////
只顯示關於資料庫資訊,包括資料庫連線,資料庫執行語句
//),
array (
'class
' => '
cprofilelogroute',
'levels
' => '
trace',
'showinfirebug
' => true
,
'ignoreajaxinfirebug
' => true
,
'categories
' => '
system.db.* '))),
我所在公司的二級配置位址是 protected/config/config.api.edaijia.cc api
在頁面下方輸出 主要使用此日誌類
'categories
'=>'
system.db.*
',//
日誌分類
[第二種]
在yii框架的libs目錄下,找到/libs/framework/db/cdbcommand.php檔案
然後找到兩個方法,queryinternal和execute方法,編輯方法,echo 出sql語句。
這裡編輯queryinternal方法524行。
12 列印 1 到最大的 n 位數
題目 輸入數字 n,按順序列印出從 1 到 最大的 n 位十進位制數。比如輸入 3 則列印出 1 2 3 一直到最大的3位數即 999。解析 容易知道不能用 int 等數字型別表示 大數問題 關鍵點 1.如何用字串表示n位數?2.如何實現字串數的自增操作?3.如何列印乙個字串數?申請長度是n 1的字...
12 列印1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,列印出1,2,3一直到最大的3位數即999.n的取值範圍可以很大,考慮大數問題。最常見的方法是用字串或者數字表達大數。把問題轉換成數字排列問題。思考 如何用字串儲存數字 如何在字串表達的數字上模擬加法 把字串表達是數字列印出來 incl...
17 列印從1到最大的n位數
輸入數字n,按順序列印出從1到最大的n位十進位制數。比如輸入3,則列印出1 2 3一直到最大的3位數999。示例 1 輸入 n 1 輸出 1,2,3,4,5,6,7,8,9 說明 題目要求列印 從1至最大的n位數的列表 因此需考慮以下兩個問題 最大的n位數 記為end 和位數n的關係 例如最大的1位...