国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

請教個問題,關(guān)于定時器從數(shù)據(jù)庫查詢一個數(shù)組N多數(shù)據(jù),,然后for 按id,分配多個進(jìn)程進(jìn)行處理,,但如何防止他們不重復(fù)處理。

phoenix

關(guān)于一個數(shù)組N多數(shù)據(jù),定時查詢,然后for 按id,分配多個進(jìn)程進(jìn)行處理,,但如何防止他們不重復(fù)處理。
worker 類
運(yùn)行定時內(nèi)獲取數(shù)據(jù)庫數(shù)據(jù),是個多維數(shù)組,如何把數(shù)組中每個數(shù)據(jù)分配一個進(jìn)程進(jìn)行處理,處理完后,就行下一輪循環(huán),如何讓進(jìn)程不會重復(fù)處理數(shù)據(jù),
50條數(shù)據(jù)
分配給10個進(jìn)程后,進(jìn)行處理,發(fā)現(xiàn)處理數(shù)據(jù)的時候有重復(fù)。未找到原因

能給解決重復(fù)處理數(shù)據(jù)的思路
2秒查詢數(shù)據(jù)庫
$j = count($arr);
while($i<=$j-1){
dotask(arr[$i],option); 執(zhí)行任務(wù),
$i++
}

2300 1 0
1個回答

latin

你沒做排重處理當(dāng)然重復(fù)了。
按照進(jìn)程id取模,只處理取模后等于當(dāng)前進(jìn)程id的數(shù)據(jù)就好了。偽代碼

$worker = new Worker();
$worker->count = 10;
$worker->onWorkerStart = function($worker){
     $worker_id = $worker->id;
     $j = count($arr);
     $i = 0;
    while($i<=$j-1){
       // 不是當(dāng)前進(jìn)程該處理的任務(wù)則忽略
        if ($i != $worker->id) continue;
        dotask(arr[$i],option); 執(zhí)行任務(wù),
        $i++
    }
}
  • phoenix 2021-10-26

    謝謝,不重復(fù)了, 5個進(jìn)程cpu100,看來還是有些問題。

年代過于久遠(yuǎn),無法發(fā)表回答
??