有没有人曾告诉你,你的SQL又报错了?
作者:网络转载 发布时间:[ 2016/2/29 11:39:43 ] 推荐标签:数据库
引语:线上运行的真实环境总是变幻莫测,明明你在本地测试的时候各种情况都是OK得不要不要的,也许你还在为自己某个地方炫酷的效果以及神奇的设计感到激动不已!但是,到线上以后,他会偶尔跟抽风一样的跟你say Hello,World!然后会有人跟你说,这里出问题了,那里出问题了!反应往往是这样,“不可能!”,“妈蛋,怎么可能?”,“我纳闷了,怎么可能出现这种问题呢?”。哈哈,这也许是大多数攻城狮朋友们经常发出的感叹吧!
那么,我们来聊聊怎样发现你的错误以及解决一些错误的快速定位方法,而不是等到用户来你这里反馈,因为那时候可能已经错太久了!我们要做的,应该是将错误发现在第一时间,解决在萌芽之中,作出事后总结以避免以后再犯类似错误!因为,错不可怕,可怕的是一直犯同样的错误,那样的话,你和新手有何差别?
说明几点:
1. 本文主要解决的问题是SQL相关的错误;
2. 本文以PHP微视角出发;(妈蛋,谁叫我是从事PHP开发呢?)
3. 本文解决的问题为,1 如何第一时间发现问题;2 如何解决问题;
4. 欢迎质疑、补充;
正题一、如何发现问题?
测试什么的那不用说了,谁TM敢不过测试直接上线?如果真是那样,我只能说,你牛逼!测试是一道很重要的防线保障,一般来说,经过测试后的功能,上线之后,Bug不会太多,或者说不会太明显!好吧,我假设测试一个问题都没有发现,那么, 我们上线吧!其实,上线之后,我们心里是没有底的,尤其是在某些还没有一套完善的部署系统的公司或项目中,上线前和上线后总会出各种稀奇古怪。到底开发和用户是两个层面的人,鬼知道会发生什么呢?我们悬着的一颗心,竟然要完全依赖于用户的操作,用户的反馈?噢,不,那样,太被动了!
主动发现问题。 一、上线之后,你也不可能再进行测试了,你现在是一个普通用户,那么,你自己去操作是必须的,一个大概走下来,基本功能可以确定了,Ok,接下来,真正交给用户! 二、如果没有后手,真的完全交给用户,那你还是太Low了,因为,必要的监控措施是一定要有的!这里指的监控是程序级别的,也是所谓的报错。怎样记录报错信息?怎样知道报错了?都说了嘛,我是从事PHP开发的。PHP中有一个记录错误日志的功能,error_reporting,把这个给打开,指定错误日志位置,级别,可以记录PHP的错误了,但是一定要关闭错误的页面显示,否则,用户看到此类错误,你完蛋了!既然本文说的是SQL错误,那不应该是这里,没错。但是我要说的是,当SQL报错的时候,PHP也已经发出报错了,通常是一个警告级别的错误,而且这种错误往往是关联性的发生,如下面的语句依赖于上面的查询,而上面已经报错,那么后续也会跟着报错。PHP知道错误了,但是只是大概,那SQL具体哪里错了?只有他自己知道,这种记录交给他吧!大概原理是,在查询出错的地方,记录错误日志,错误日志主要记录信息有:错误信息,文件位置(追根溯源一个个文件查上去直到入口),下面是一段示例记录错误信息的PHP代码供参考:
<?php
// 记录sql错误日志
private function logError($msg = "")
{
if (isset($this->_logfile))
{
if (!$msg)
{
if (!mysql_errno())
{
return;
}
$msg = "mysql_errno: " . mysql_errno() . "
mysql_error: " . mysql_error();
}
file_put_contents($this->_logfile, '[' . date('Y-m-d H:i:s') . "] $msg
", FILE_APPEND);
$trace = debug_backtrace();
foreach ($trace as $call)
{
if(empty($call['file']) && empty($call['line']))
{
continue;
}
file_put_contents($this->_logfile, "{$call['file']} on line {$call['line']}
", FILE_APPEND);
}
file_put_contents($this->_logfile, "
", FILE_APPEND);
}
}
这样,你有了一个可供参考的东西了。但是,还有一个关键的问题,是你怎么知道报错了?那是报警提示了,你可以使用微信提供的测试号通知自己、你可以使用公司的短信平台给自己发短信、你可以发邮件给自己,然后设置邮件短信提醒!收到信息,赶紧解决去吧,更改的时候,你只需去查看这个文件指示的地方,你大概知道是什么错了,都知道什么错了,我想,要想解决问题,应该只是个时间问题了,而且是个短时间问题!
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11