守护进程运行过程中出现部分重复性被插入
守护进程执行过程中出现数据被重复性的插入到数据库#
### 需要对大量数据的某个值进行内部数据的统计并进行分类插入不同的表进行存储,通过 supervisorctl 的守护进程进行此操作,在执行过程中发现有一部分数据在插入过程中会出现重复性的数据,造成统计分类的不准确,查看代码没有看到逻辑上的错误,打印日志也没有出现重复性的日志输出,但是最终数据库的记录依旧会出现重复,不知道是哪的问题,希望能够得到解决,谢谢。
特附上代码供参考
public function handle()
{
while(true) {
$toolType = ['y'=>1,'m'=>2,'d'=>3,'h'=>4,'s'=>5];
$productList=ProductService::getAllDataList();
if(!empty($productList)){
foreach($productList as $v ) {
$arrDetail = json_decode($v['detail'],true);
$tag=ParameterData::ToDealForTag($arrDetail,$v,$v['pid'],$v['id'],$toolType);
$secTag=ParameterData::ToDealForSecTag($arrDetail,$v,$v['pid'],$v['id']); $xtag=ParameterData::ToDealForClassi($arrDetail,$v,$v['pid'],$v['id']);
unset($arrDetail);
if (!empty($tag)){
// //此处日志打印记录正常,插入数组数据,但数据库中会出现部分相同的数据记录
ProductService::ProductTagAdd($tag);
unset($tag);
// //此处日志打印记录正常
}
if (!empty($xtag)) {
ProductService::ProductXtagAdd($xtag);
unset($xtag);
}
if (!empty($secTag)){
ProductService::ProductSectagAdd($secTag);
unset($secTag);
} ProductService::ProductUpdateDetail(['id'=>$v['id'],'updated'=>time(),'is_per'=>0]);
//此处日志打印记录正常
unset($v);
}
}
unset($productList);
sleep(10);
}
}
推荐文章: