phpcms v9의 debug 함수
2236 단어 phpcms
function usedtime(){
$stime = explode(' ', SYS_START_TIME);
$etime = explode(' ', microtime());
return number_format(($etime[1] + $etime[0] - $stime[1] - $stime[0]), 6);
}
function debug(){
if(!pc_base::load_config('system','debug') || defined('HTML')) return false;
$myip = array(' debug ip ');
pc_base::load_sys_class('db_factory', '', 0);
$sql_status = db_factory::get_instance();
$mysqlserver = pc_base::load_config('database');// sql
$count = $querystr = array();
foreach($mysqlserver AS $k=>$v){
$db_list = $sql_status->get_database($k);
$count[] = $k.':'. $db_list->querycount;
$querystr[] = $k.':'. implode(';<br />',$db_list->querystr);
}
$count = implode(';',$count);
$querystr = implode(';',$querystr);
$output = '<table><tr><td> </td><td>'.usedtime().'</td></tr><tr><td>sql </td><td>'.$count.'</td></tr><tr><td>sql </td><td>'.$querystr.'</td></tr></table>';
return in_array(ip(),$myip) ? $output : '';
}
만약 다중 데이터베이스 서버를 사용한다면, 모든 서버의 조회 횟수를 통계할 수 있다.
또한 실행된 sql를 모두 출력하려면 mysql를 추가로 수정해야 합니다.class.php
변수 정의public $querystr =array () 추가;
다음 방법을 수정합니다.
private function execute($sql) {
if(!is_resource($this->link)) {
$this->connect();
}
$stime = explode(' ', microtime());
$this->lastqueryid = mysql_query($sql, $this->link) or $this->halt(mysql_error(), $sql);
$etime = explode(' ', microtime());
$sec_time = number_format(($etime[1] + $etime[0] - $stime[1] - $stime[0]), 6);
if(pc_base::load_config('system','debug')) $this->querystr[] = $sql.'('.$sec_time.')';
$this->querycount++;
return $this->lastqueryid;
}