请教个问题,关于定时器从数据库查询一个数组N多数据,,然后for 按id,分配多个进程进行处理,,但如何防止他们不重复处理。

0

关于一个数组N多数据,定时查询,然后for 按id,分配多个进程进行处理,,但如何防止他们不重复处理。
worker 类
运行定时内获取数据库数据,是个多维数组,如何把数组中每个数据分配一个进程进行处理,处理完后,就行下一轮循环,如何让进程不会重复处理数据,
50条数据
分配给10个进程后,进行处理,发现处理数据的时候有重复。未找到原因


能给解决重复处理数据的思路
2秒查询数据库
$j = count($arr);
while($i<=$j-1){
dotask(arr[$i],option); 执行任务,
$i++
}

已邀请:

latin - 挨踢男

赞同来自:

你没做排重处理当然重复了。
按照进程id取模,只处理取模后等于当前进程id的数据就好了。伪代码


$worker = new Worker();
$worker->count = 10;
$worker->onWorkerStart = function($worker){
$worker_id = $worker->id;
$j = count($arr);
$i = 0;
while($i<=$j-1){
// 不是当前进程该处理的任务则忽略
if ($i != $worker->id) continue;
dotask(arr[$i],option); 执行任务,
$i++
}
}

要回复问题请先登录注册