定位错误位置

  对于每一个编程人员来说,如果自己的程序报错,那么简单的浏览一下错误信息就能大致明白错误原因及错误位置,即使一时间无法确定,但是经过简单的分析也能很快得出结论,这对于个人来说是非常方便的,但是,在某些时候我们要修改的并不是自己的代码,这个时候如果要是从都到尾的去理解一遍他人的代码,这样的话就是有点浪费时间了,所以如何快速定位就是非常重要了。

  首先来说,对于PHP编程有一个非常好用的函数可以帮助我们定位错误信息,避免给用户提供不友好的交互体验。

  1、网站的问题排查主要看日志,因为线上的网站一般不会开启调试模式,所以调试的话只能看日志

  2、网站优化主要看请求的资源次数和请求的响应时间,如果响应时间太长就要看是不是数据库的请求多,或者数据库响应慢,首先看sql执行次数和每条sql的执行时间,找出慢查询解决问题

  3、可以使用PHP扩展工具Xdebug进行调试:http://www.jb51.net/article/38780.htm

  4、PHP中有一个叫做  register_shutdown_function 的函数,当我们的脚本执行完成或意外中断停止导致PHP即将关闭时,此函数会被调用。所以,我们可以使用在脚本开始处设置一个变量为false,然后在脚本末尾将之设置为true的方法,让PHP关闭回调函数检查脚本完成与否. 如果我们的变量仍旧是false,我们就知道脚本的最后一行没有执行,因此它肯定在程序执行到某处中断停止。你可以通过关闭致命错误的显示(译注:可以设置display_errors和 error_reporting),让例子看起来好看些.

<?php
$clean = false;
function shutdown_func(){
global $clean;
if (!$clean){
die("not a clean shutdown");
}
return false;
}
register_shutdown_function("shutdown_func");
$a = 1;
$a = new FooClass(); // 将因为致命错误而失败
$clean = true;
?>

正如所看到,如果关闭回调函数运行时,clean变量没有被设为true,shutdown_func函数将会打印出一些东西.这个东西可以包装成一个类(不使用全局变量).
PHP提供register_shutdown_function()这个函数,能够在脚本终止前回调注册的函数,也就是当 PHP 程序执行完成后执行的函数。
register_shutdown_function 执行机制是:PHP把要调用的函数调入内存。当页面所有PHP语句都执行完成时,再调用此 函数。注意,在这个时候从内存中调用,不是从PHP页面中调用,所以上面的例子不能使用相对路径,因为PHP已经当原来的页面不存在了。就没有什么相对路 径可言。
注意:register_shutdown_function 是指在执行完所有PHP语句后再调用函数,不要理解成客户端关闭流浏览器页面时调用函数。
可以这样理解调用条件:
1、当页面被用户强制停止时
2、当程序代码运行超时时
3、当PHP代码执行完成时,代码执行存在异常和错误、警告

原文:http://www.jb51.net/article/37815.htm

转载于:https://www.cnblogs.com/dong-blog/p/5965956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值