php debug记录程序执行时间和执行情况

/**
 * debuging(‘dtrace‘); //查看调用栈
 * debuging($var); //打印$var(var_dump)
 * debuging($var, ‘php‘); //打印$var(var_export)
 * debuging($var, $echo, 2); //以json格式输出$var
 * debuging(__LINE__.__CLASS);//常用于大量if语句体定位, 或者寻找程序结束点
 */
function debuging($var = ‘‘, $echo = ‘‘, $die = false, $force = false) {
  static $clear;
  if (0 && $clear === null) {
    ob_end_flush ();
    $clear = true;
  }
  static $d;
  if (0 && empty ( $d )) {
    $d = 1;
    debuging ( ‘dtrace‘ );
  }
  
  $force && $_GET [‘debug‘] = 1;
  if (isset ( $_GET [‘debug‘] )) {
    if (‘dtrace‘ === $var) {
      dTrace ( $die );
    } elseif ($die === 2) {
      header ( ‘Content-type: application/json‘ );
      echo json_encode ( $var );
    } else {
      echo "<pre>\n";
      if ($echo) {
        echo "$echo:";
      }
      if ($echo === ‘php‘)
        var_export ( $var );
      else
        var_dump ( $var );
      echo "</pre>\n";
    }
    $die && die ();
  }
}
function dTrace($die = false) {
  try {
    static $lastTime;
    $lastTime or $lastTime = $_SERVER [‘REQUEST_TIME‘];
    throw new Exception ();
  } catch ( Exception $e ) {
    $currTime = microtime ( true );
    $totalTime = $currTime - $_SERVER [‘REQUEST_TIME‘];
    $execTime = $currTime - $lastTime;
    $lastTime = $currTime;
    echo "\n<hr>\n";
    echo "execTime: $execTime s.<br/>\n";
    echo "totalTime: $totalTime s.<br/>\n";
    echo "Trace:<br/>\n";
   // echo $e->getTraceAsString() ;
    // debug_print_backtrace();$die && die;
    debuging ( $e->getTraceAsString (), ‘php‘, $die );
  }
}

for($i=0;$i<100000;$i++) {

   $a +=$i;

}

dTrace();
时间: 2024-08-13 19:27:53

php debug记录程序执行时间和执行情况的相关文章

Spring AOP实例——异常处理和记录程序执行时间

实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动代理功能,然后一个用Java的动态代理,一个用CGLIB代理. 实现思路: 首先定义负责异常处理的Advice:ExceptionHandler.java,定义记录程序执行时间的Advice:TimeHandler.java 然后定义业务逻辑接口LogicInterface.java,编写实现业务逻

当程序执行时间很快,控制台没显示执行代码和数据库

当程序执行时间很快,控制台没显示执行代码和数据库时,要想到是resin没找到程序的原因,这个时候就要检查配置文件里对应程序的路径是否正确. 如图:

寒假学习记录2_Scala解释器的使用以及Scala程序的编译执行

Scala解释器的使用: 由于在前面的安装过程中,已经自动设置了path变量,所以不需要给出scala命令的路径全称,在命令提示符终端中输入“scala”命令便会进入scala命令行提示符状态(即“scala>”),可以在后面输入命令. 运行Scala解释器以后,就可以测试了.输入一条语句,解释器会立即执行语句并返回结果,这就是REPL(Read-Eval-Print Loop,交互式解释器).为我们提供了交互式执行环境,表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间

C#程序调用CMD执行命令

在windows环境下,命令行程序为cmd.exe,是一个32位的命令行程序,微软Windows系统基于Windows上的命令解释程序,类似于微软的DOS操作系统.输入一些命令,cmd.exe可以执行,比如输入shutdown -s就会在30秒后关机.总之,它非常有用.打开方法:开始-所有程序-附件 或 开始-寻找-输入:cmd/cmd.exe 回车.它也可以执行BAT文件. 下面介绍使用C#程序调用cmd执行命令: 代码: 1 using System; 2 using System.Coll

第11周阅读程序写出执行结果1(5)

/* *Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 刘云 *完成日期 : 2016年5月8号 *版 本 号 : v6.0 * *问题描述 : 阅读程序写出执行结果1(5) *输入描述 : 无 *程序输出 : */ /*********************************(a)****************************************************/ #include

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码

当我在窗体初始化的时候,调用了一个外部的dll,它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一.Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况.这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用. 大致理解:就

正试图在 os 加载程序锁内执行托管代码

正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码... 当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个"正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码"的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一.Loaderlock检测在一个拥有操作系统loader

C# 使用Log4Net记录程序日志

在之前的博客中,写过使用系统内置的Trace类记录程序日志,具体请参考:C# 使用Trace记录程序日志.这篇博客将介绍如何使用Log4Net记录程序日志. 首先需要引用Log4Net.dll,我们可以使用Visual Studio的NuGet来引入,也可以从官网上面下载.下面是一个简单的LogHelper类, using log4net; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace CommonLibra

正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一.Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况.这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用. 大致理解