CProfileLogRoute
鍖 | system.logging |
---|---|
缁ф壙 | class CProfileLogRoute » CWebLogRoute » CLogRoute » CComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CProfileLogRoute.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/logging/CProfileLogRoute.php |
CProfileLogRoute鍦ㄧ綉椤典腑鏄剧ず鍒嗘瀽缁撴灉銆
閫氳繃璋冪敤YiiBase::beginProfile() 鍜 YiiBase::endProfile()瀹屾垚鍒嗘瀽锛 瀹冧滑鏍囪寮濮嬪拰缁撴潫鐨勪唬鐮佸潡銆
CProfileLogRoute閫氳繃璁剧疆report灞炴ф敮鎸佷袱绉嶇被鍨嬫姤鍛婏細
閫氳繃璋冪敤YiiBase::beginProfile() 鍜 YiiBase::endProfile()瀹屾垚鍒嗘瀽锛 瀹冧滑鏍囪寮濮嬪拰缁撴潫鐨勪唬鐮佸潡銆
CProfileLogRoute閫氳繃璁剧疆report灞炴ф敮鎸佷袱绉嶇被鍨嬫姤鍛婏細
- summary: 姣忎竴涓爣璁颁唬鐮佸潡鐨勬墽琛屾椂闂村垪琛
- callstack: 鍦ㄤ竴涓垎灞傜殑瑙嗗浘涓垪鍑烘爣璁颁唬鐮佸潡锛屽弽鏄犲畠浠殑璋冪敤椤哄簭銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
categories | string | 琚楀彿鎴栫┖鏍煎垎闅旂殑绫诲埆鍒楄〃銆傞粯璁や负绌猴紝鎰忓懗鐫鎵鏈夌被鍒 | CLogRoute |
enabled | boolean | 鏄惁鍚敤杩欎釜鏃ュ織璺敱銆傞粯璁や负true銆 | CLogRoute |
filter | mixed | 闄勫姞杩囨护鍣 (渚嬪 CLogFilter) 瀹冭搴旂敤鍒版棩蹇椾俊鎭
杩欎釜灞炴х殑鍊艰浼犻掑埌 Yii::createComponent 鍒涘缓涓涓棩蹇楄繃婊ゅ櫒瀵硅薄銆
缁撴灉锛岃繖鍙兘鏄竴涓〃绀鸿繃婊ゅ櫒绫诲悕鐨勫瓧绗︿覆鎴栦竴涓〃绀鸿繃婊ゅ櫒閰嶇疆鐨勬暟缁勩
鎬讳箣锛屾棩蹇楄繃婊ゅ櫒绫诲簲璇ユ槸 CLogFilter 鎴栧畠鐨勪竴涓瓙绫汇 榛樿涓簄ull锛屾剰鍛崇潃娌℃湁杩囨护鍣ㄨ浣跨敤銆 |
CLogRoute |
groupByToken | boolean | 鏄惁鎸夌収鍒嗘瀽浠ょ墝鎬昏缁撴灉銆 濡傛灉涓篺alse锛岀粨鏋滃皢琚被鍒悎骞躲 榛樿涓簍rue銆傛敞鎰忚繖涓睘鎬т粎浠呭鎽樿鎶ュ憡鏈夋晥锛 褰report鏄榮ummary鈥欐椂鍚敤瀹冦 | CProfileLogRoute |
ignoreAjaxInFireBug | boolean | 鍦‵irebug涓殑Ajax璋冪敤鐨勬棩蹇楁槸鍚﹀簲璇ヨ蹇界暐銆傞粯璁や负true銆 杩欎釜閫夐」瑕佸皬蹇冧娇鐢紝,鍥犱负涓涓猘jax璋冪敤杩斿洖鎵鏈夌殑杈撳嚭浣滀负涓涓粨鏋滄暟鎹 渚嬪锛屽鏋渁jax璋冪敤涓涓猨son鏍煎紡鐨勮繑鍥炵粨鏋滐紝浠讳綍鏉ヨ嚜鏃ュ織璁板綍鍣ㄧ殑杈撳嚭灏嗗紩璧穉jax璋冪敤澶辫触銆 | CWebLogRoute |
levels | string | 鐢ㄩ楀彿鎴栫┖鏍煎垎闅旂殑绛夌骇鍒楄〃銆傞粯璁ゆ槸绌猴紝鎰忓懗鐫鎵鏈夌瓑绾с | CLogRoute |
logs | array | 鍒扮洰鍓嶄负姝㈣繖涓棩蹇楄矾鐢辨悳闆嗙殑鏃ュ織銆 | CLogRoute |
report | string | 瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傞粯璁や负鈥榮ummary鈥欍 | CProfileLogRoute |
showInFireBug | boolean | 鏄惁姝ゆ棩鏈熷簲璇ユ樉绀哄湪FireBug鑰屼笉鏄祻瑙堝櫒绐楀彛銆傞粯璁や负false銆 | CWebLogRoute |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
collectLogs() | 浠庢棩蹇楄褰曞櫒鍙栧洖宸茶繃婊ょ殑鏃ュ織淇℃伅浠ヤ究杩涗竴姝ュ鐞嗐 | CLogRoute |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getReport() | 杩斿洖瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傞粯璁や负鈥榮ummary鈥欍 | CProfileLogRoute |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
init() | 鍒濆鍖栨璺敱銆 | CProfileLogRoute |
processLogs() | 鏄剧ず鏃ュ織淇℃伅銆 | CProfileLogRoute |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
setReport() | 璁剧疆瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傛湁鏁堝煎寘鎷榮ummary鈥欏拰鈥榗allstack鈥欍 | CProfileLogRoute |
鍙椾繚鎶ゆ柟娉
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
aggregateResult() | 鑱氱劍鎶ュ憡缁撴灉銆 | CProfileLogRoute |
displayCallstack() | 鏄剧ず鍒嗘瀽绋嬪簭涓烘樉绀虹殑璋冪敤鍫嗘爤銆 | CProfileLogRoute |
displaySummary() | 鏄剧ず鍒嗘瀽缁撴灉鐨勬姤鍛婃憳瑕併 | CProfileLogRoute |
formatLogMessage() | 鏍煎紡鍖栦竴鏉℃棩蹇椾俊鎭凡缁欏畾涓嶅悓瀛楁銆 | CLogRoute |
render() | 娓叉煋璇ヨ鍥俱 | CWebLogRoute |
灞炴ц缁
groupByToken
灞炴
public boolean $groupByToken;
鏄惁鎸夌収鍒嗘瀽浠ょ墝鎬昏缁撴灉銆 濡傛灉涓篺alse锛岀粨鏋滃皢琚被鍒悎骞躲 榛樿涓簍rue銆傛敞鎰忚繖涓睘鎬т粎浠呭鎽樿鎶ュ憡鏈夋晥锛 褰report鏄榮ummary鈥欐椂鍚敤瀹冦
report
灞炴
瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傞粯璁や负鈥榮ummary鈥欍
鏂规硶璇︾粏
aggregateResult()
鏂规硶
protected array aggregateResult(array $result, float $delta)
| ||
$result | array | 杩欎釜浠g爜鍧楃殑鏃ュ織缁撴灉 |
$delta | float | 杩欎釜浠g爜鍧楄姳璐圭殑鏃堕棿 |
{return} | array |
婧愮爜锛 framework/logging/CProfileLogRoute.php#191 (鏄剧ず)
protected function aggregateResult($result,$delta)
{
list($token,$calls,$min,$max,$total)=$result;
if($delta<$min)
$min=$delta;
else if($delta>$max)
$max=$delta;
$calls++;
$total+=$delta;
return array($token,$calls,$min,$max,$total);
}
鑱氱劍鎶ュ憡缁撴灉銆
displayCallstack()
鏂规硶
protected void displayCallstack(array $logs)
| ||
$logs | array | 鏃ュ織鍒楄〃 |
婧愮爜锛 framework/logging/CProfileLogRoute.php#93 (鏄剧ず)
protected function displayCallstack($logs)
{
$stack=array();
$results=array();
$n=0;
foreach($logs as $log)
{
if($log[1]!==CLogger::LEVEL_PROFILE)
continue;
$message=$log[0];
if(!strncasecmp($message,'begin:',6))
{
$log[0]=substr($message,6);
$log[4]=$n;
$stack[]=$log;
$n++;
}
else if(!strncasecmp($message,'end:',4))
{
$token=substr($message,4);
if(($last=array_pop($stack))!==null && $last[0]===$token)
{
$delta=$log[3]-$last[3];
$results[$last[4]]=array($token,$delta,count($stack));
}
else
throw new CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
array('{token}'=>$token)));
}
}
// remaining entries should be closed here
$now=microtime(true);
while(($last=array_pop($stack))!==null)
$results[$last[4]]=array($last[0],$now-$last[3],count($stack));
ksort($results);
$this->render('profile-callstack',$results);
}
鏄剧ず鍒嗘瀽绋嬪簭涓烘樉绀虹殑璋冪敤鍫嗘爤銆
displaySummary()
鏂规硶
protected void displaySummary(array $logs)
| ||
$logs | array | 鏃ュ織鍒楄〃 |
婧愮爜锛 framework/logging/CProfileLogRoute.php#135 (鏄剧ず)
protected function displaySummary($logs)
{
$stack=array();
foreach($logs as $log)
{
if($log[1]!==CLogger::LEVEL_PROFILE)
continue;
$message=$log[0];
if(!strncasecmp($message,'begin:',6))
{
$log[0]=substr($message,6);
$stack[]=$log;
}
else if(!strncasecmp($message,'end:',4))
{
$token=substr($message,4);
if(($last=array_pop($stack))!==null && $last[0]===$token)
{
$delta=$log[3]-$last[3];
if(!$this->groupByToken)
$token=$log[2];
if(isset($results[$token]))
$results[$token]=$this->aggregateResult($results[$token],$delta);
else
$results[$token]=array($token,1,$delta,$delta,$delta);
}
else
throw new CException(Yii::t('yii','CProfileLogRoute found a mismatching code block "{token}". Make sure the calls to Yii::beginProfile() and Yii::endProfile() be properly nested.',
array('{token}'=>$token)));
}
}
$now=microtime(true);
while(($last=array_pop($stack))!==null)
{
$delta=$now-$last[3];
$token=$this->groupByToken ? $last[0] : $last[2];
if(isset($results[$token]))
$results[$token]=$this->aggregateResult($results[$token],$delta);
else
$results[$token]=array($token,1,$delta,$delta,$delta);
}
$entries=array_values($results);
$func=create_function('$a,$b','return $a[4]<$b[4]?1:0;');
usort($entries,$func);
$this->render('profile-summary',$entries);
}
鏄剧ず鍒嗘瀽缁撴灉鐨勬姤鍛婃憳瑕併
getReport()
鏂规硶
public string getReport()
| ||
{return} | string | 瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傞粯璁や负鈥榮ummary鈥欍 |
婧愮爜锛 framework/logging/CProfileLogRoute.php#56 (鏄剧ず)
public function getReport()
{
return $this->_report;
}
init()
鏂规硶
public void init()
|
婧愮爜锛 framework/logging/CProfileLogRoute.php#48 (鏄剧ず)
public function init()
{
$this->levels=CLogger::LEVEL_PROFILE;
}
鍒濆鍖栨璺敱銆 杩欎釜鏂规硶鍦ㄨ矾鐢辩鐞嗗櫒鍒涘缓姝よ矾鐢卞悗鍙戣捣銆
processLogs()
鏂规硶
public void processLogs(array $logs)
| ||
$logs | array | 鏃ュ織淇℃伅鍒楄〃 |
婧愮爜锛 framework/logging/CProfileLogRoute.php#77 (鏄剧ず)
public function processLogs($logs)
{
$app=Yii::app();
if(!($app instanceof CWebApplication) || $app->getRequest()->getIsAjaxRequest())
return;
if($this->getReport()==='summary')
$this->displaySummary($logs);
else
$this->displayCallstack($logs);
}
鏄剧ず鏃ュ織淇℃伅銆
setReport()
鏂规硶
public void setReport(string $value)
| ||
$value | string | 瑕佹樉绀虹殑鍒嗘瀽鎶ュ憡鐨勭被鍨嬨傛湁鏁堝煎寘鎷榮ummary鈥欏拰鈥榗allstack鈥欍 |
婧愮爜锛 framework/logging/CProfileLogRoute.php#64 (鏄剧ず)
public function setReport($value)
{
if($value==='summary' || $value==='callstack')
$this->_report=$value;
else
throw new CException(Yii::t('yii','CProfileLogRoute.report "{report}" is invalid. Valid values include "summary" and "callstack".',
array('{report}'=>$value)));
}