Bug分解

前天测试公司后台,发现了一个bug.

功能是这样的,从数据库里取出数据,导出csv格式,每次取出500条数据,循环导出,然而我发现如果数据导出大于500条就出现bug了,比如我数据库有1000条数据,最后你会发现导出了却有1500条。

直接贴代码了,代码被我精简了些
bug.png
bug在哪呢?

先解释array_slice的作用吧,这个函数是从数组里根据设定取出数据,array_slice($list, $i * 500,
500);,很明显每次取出500条。

当数据大于500条时,for循环会执行两次,对吗? bug就在这了,注意$user变量 1.第一次循环,第一个500条取出之后,会放到 $user里边,现在$user里边有500条数据,把数据存到$html里(存过之后就应该释放$user变量了,bug) 2.然后在执行第二次循环,注意现在$user里有500条,$html里有500条,这次又取出500条,存到$user里,现在$user里有1000条,在存进$html就是500+1000=1500了

bug原因就是没有及时释放$user变量 ![截图未命名.jpg][2] 解决方法就是存进$html里时释放$user变量

平时很多时候,我们都会忽略小问题,但找的时候就不容易找了,所以我们要对自己的代码负责。

发表评论