麻煩 walkor 有時(shí)間幫我看一下,
在處理數(shù)據(jù)的定時(shí)器中,會出現(xiàn)重復(fù)的任務(wù),
任務(wù)數(shù)組我是以數(shù)據(jù)庫邏輯id為下標(biāo)的,
希望能幫忙指出問題在哪?或有什么更好的實(shí)現(xiàn)方式
$queue = array(); // 任務(wù)數(shù)組
// 查詢?nèi)蝿?wù)定時(shí)器
Timer::add(1, function () use (&$queue, $getSwitch) {
$list = $getSwitch->get_all_task(); // 從數(shù)據(jù)庫里查詢出來的數(shù)組,條件是狀態(tài)為0,邏輯ID做數(shù)組下標(biāo)
$task = array_diff_key($list, $queue);
$queue = array_merge($queue, $task);
});
// 處理數(shù)據(jù)
Timer::add(0.2, function () use (&$queue, $getSwitch) {
$bunk = current($queue);
$getSwitch->set_task_status((int)$bunk, 1); // 修改狀態(tài)為1
$task = array_shift($queue); // 修改狀態(tài)再彈出數(shù)組
// 重置內(nèi)部指針
reset($queue);
/_ CODE 處理$task任務(wù) _/
});