注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Copper peas ' Bolg

Keep On Moving...This Is My Life...

 
 
 

日志

 
 

【原】获取PHP页面执行,sql执行时间的库  

2011-07-14 00:28:49|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一个debug库页面,一个deom页面

debug.php

<?php
/**
 * debug配置
 * @anthor Chen Wei Han <csq-3@163.com>
 * @copyright Chen Wei Han 2011-7-13下午09:56:07
 * @link http://csq-3.blog.163.com
 * @package debug
 */
define('DEBUG', true);      //是否开Debug监控
define('PAGEDEBUG', true);  //是否开启页面执行时间监控
define('SQLDEBUG', true);  //是否开启sql执行时间监控【开启需要在页面查询定义,看最deom注释】
define('AJAX', false);      //是否是ajax请求,开启将ajax执行的php输入到日志文件中
define('APP_PATH', realpath(dirname(__FILE__)));
if(DEBUG)
{
 Debug::init();
}

class Debug
{
 /**
  * 初始化
  */
 public static function init()
 {
   /*
    * microtime()函数获取微秒为4位,定义php高精度处理函数及位数
    */
      bcscale(4);     
      if(!AJAX)
   {
      register_shutdown_function("Debug::outstyle");
   }
   self::pagedebugrun();
   self::sqldebugrun();
 }

 /**
  * 样式
  */
 public  static function outstyle()
 {
  echo "<hr>Debug Output   [precision 4]<br>";
 }
 
 
 /**
  * page执行时间监控
  */
 private static function pagedebugrun()
 {
  if(PAGEDEBUG)
  {   
    $pagetime_start = Debug::microtime_float();
    register_shutdown_function('Pagedebug::page_shutdown',$pagetime_start);
  }
 }
 
 /**
  * sql执行时间监控
  */
 private static function sqldebugrun()
 {
  if(SQLDEBUG)
  {
    register_shutdown_function('Sqldebug::output');
  }
 }
 
    /**
  * 获取当前时间
  */
 public static function microtime_float()
 {
     list($usec, $sec) = explode(" ", microtime());
     return bcadd((float)$usec,(float)$sec);
 }
   
 /**
  * 判断输出
  */
 public static  function Isajax($data)
 {
     if(AJAX)
     {
       //ajax调试输入到日志
       file_put_contents(APP_PATH."/debug.log","debugtime:".date("Y-m-d g:i:s a",time())." ## ".$data,FILE_APPEND);
     }
     else
     {
        echo $data;
     }
 }
}

/**
 * 内存使用量【使用量需要在页尾部加监控才行】
 * @anthor Chen Wei Han <csq-3@163.com>
 * @copyright Chen Wei Han 2011-7-11上午09:20:05
 * @link http://csq-3.blog.163.com
 * @package debug
 */
class Memorybug
{
 static private $data; 
 static public function memorymsg($start_memory,$end_memory)
 {    
     echo $start_memory;
     echo "<br>";
     echo $end_memory;
     //启动页面系统默认使用33M左右,debug使用4M左右
  self::$data= $_SERVER["PHP_SELF"]." page_usememory:".($end_memory-$start_memory)." K  page_usepeakmemory:".memory_get_peak_usage()." K <br>  \r\n";
  self::output();   
 }
 
    static public function output()
 {      
  Debug::Isajax(self::$data);
 }
}

/**
 * 页面Debug功能
 *
 * @anthor Chen Wei Han
 * @copyright  2011-7-8下午01:39:12
 * @package Debug
 * @todo
 */
class Pagedebug
{   
 static private $data;
 /**
  * 计算页面执行时间函数
  */
 static public function page_shutdown($pagetime_start)
 {  
  $pagetime_end = Debug::microtime_float();
     $time = bcsub($pagetime_end,$pagetime_start);
     self::$data = $_SERVER["PHP_SELF"]." page execution time : $time seconds <br> \r\n";
     self::output();           
 }
  
 static public function output()
 {      
  Debug::Isajax(self::$data);
 }
}


/**
 * 页面Debug功能
 *
 * @anthor Chen Wei Han
 * @copyright  2011-7-8下午01:39:12
 * @package Debug
 * @todo
 */
class Sqldebug
{
 static private  $all_queries = array();
 
 /**
  * 计算sql执行时间函数
  */
    static public  function sqltime($start,$end,$sql)
 {
  return self::$all_queries[]=array('sql'=>$sql,'time'=>bcsub($end,$start));
 }
   
 /**
  * 输出
  */
 static public function output()
 {
  foreach (self::$all_queries as $key=>$value)
     {
      $date = $_SERVER["PHP_SELF"]." SQL:".$value['sql']."  ### execution time:".$value['time']."seconds<br> \r\n";     
      Debug::Isajax($date);
     }
 } 
}
?>

 deom.php

<?php
/**
 * 测试
 * @anthor Chen Wei Han <csq-3@163.com>
 * @copyright Chen Wei Han 2011-7-11上午09:31:43
 * @link http://csq-3.blog.163.com
 * @package debug
 */
require_once 'debug.php';
$db = new Db;
$sql = "SELECT * FROM test.test LIMIT 0 , 30";
$result = $db->fetchAll($sql);
print_r($result);

echo "<br>";
echo "<br>";
echo "<br>";

$sql = "SELECT * FROM test.test LIMIT 0 , 10";
$result = $db->fetchAll($sql);
print_r($result);

class Db
{
 private $dbpdo;
 
 public function __construct()
 {
   try
   {
    @$this->dbpdo = new PDO('mysql:host=127.0.0.1;port=3306','root','123', array(PDO::ATTR_TIMEOUT=>3)); 
   }
   catch (PDOException $e)
   {
    $msg = $e->getMessage();
   }
 }
 
 public function query($sql)
 {
  
  /**
   * 按照下面 eg
   * 加在封装了的 数据类query即可,监控select
   * 加到execute即可监控update,del,insert
   */
  //增加的sqldebug
  if(SQLDEBUG)
  {
     $debugsql_start = Debug::microtime_float();
  }  
  //完   
  $rs  = $this->dbpdo->query($sql); 
  
  //增加的sqldebug
  if(SQLDEBUG)
  {
    $debugsql_end   = Debug::microtime_float();  
    Sqldebug::sqltime($debugsql_start,$debugsql_end,$sql);
  }
  //完
  return $rs;
 }
 
 
   public function fetchAll($sql){
         $rs = $this->query($sql);
      $all = $rs->fetchAll(PDO::FETCH_ASSOC);             
      return $all;     
    }
}

  评论这张
 
阅读(1004)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018