在上傳csv文件,需要對(duì)文件里的一些數(shù)據(jù)做處理,便使用了異步隊(duì)列來(lái)處理。先創(chuàng)建了一個(gè)模型的監(jiān)聽(tīng),在數(shù)據(jù)保存后將分發(fā)任務(wù) public function saved(Import $import)
{
dispatch(new AsyncHandleImportData($import));
}每保存一條數(shù)據(jù),就有一個(gè)任務(wù)分發(fā)給隊(duì)列,數(shù)據(jù)處理后存儲(chǔ)在另外一個(gè)表(a)中。在任務(wù)的處理中,我需要傳遞過(guò)來(lái)的數(shù)據(jù)和a表里的數(shù)據(jù)比對(duì),但是發(fā)現(xiàn)一個(gè)問(wèn)題,任務(wù)像是并行的。例如我插入了2000條數(shù)據(jù),有2000個(gè)任務(wù)。在執(zhí)行后并沒(méi)有如我預(yù)期的,先執(zhí)行的任務(wù)數(shù)據(jù)已經(jīng)插入a表,后面執(zhí)行的任務(wù)獲取到a表里的數(shù)據(jù),進(jìn)行對(duì)比,似乎是所有任務(wù)執(zhí)行時(shí)獲取的a表數(shù)據(jù)全部是空的。等于這些數(shù)據(jù)沒(méi)有經(jīng)過(guò)處理又全部插入a表了。 if($this->exist){ //預(yù)期中一些數(shù)據(jù)應(yīng)該走這里
}else{ //全部走這里
}
有大佬能解答一下么?
laravel 異步隊(duì)列問(wèn)題
12345678_0001
2019-03-15 17:36:35