有没有人曾告诉你,你的SQL又报错了?

发表于:2016-2-29 09:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:等你归去来    来源:51Testing软件测试网采编

  引语:线上运行的真实环境总是变幻莫测,明明你在本地测试的时候各种情况都是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() . "\nmysql_error: " . mysql_error();
}
file_put_contents($this->_logfile, '[' . date('Y-m-d H:i:s') . "] $msg\n", 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']}\n", FILE_APPEND);
}
file_put_contents($this->_logfile, "\n", FILE_APPEND);
}
}
  这样,你就有了一个可供参考的东西了。但是,还有一个关键的问题,就是你怎么知道报错了?那就是报警提示了,你可以使用微信提供的测试号通知自己、你可以使用公司的短信平台给自己发短信、你可以发邮件给自己,然后设置邮件短信提醒!收到信息,赶紧解决去吧,更改的时候,你只需去查看这个文件指示的地方,你就大概知道是什么错了,都知道什么错了,我想,要想解决问题,应该只是个时间问题了,而且是个短时间问题!
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号