麻烦 walkor 有时间帮我看一下,
在处理数据的定时器中,会出现重复的任务,
任务数组我是以数据库逻辑id为下标的,
希望能帮忙指出问题在哪?或有什么更好的实现方式
$queue = array(); // 任务数组
// 查询任务定时器
Timer::add(1, function () use (&$queue, $getSwitch) {
$list = $getSwitch->get_all_task(); // 从数据库里查询出来的数组,条件是状态为0,逻辑ID做数组下标
$task = array_diff_key($list, $queue);
$queue = array_merge($queue, $task);
});
// 处理数据
Timer::add(0.2, function () use (&$queue, $getSwitch) {
$bunk = current($queue);
$getSwitch->set_task_status((int)$bunk, 1); // 修改状态为1
$task = array_shift($queue); // 修改状态再弹出数组
// 重置内部指针
reset($queue);
/_ CODE 处理$task任务 _/
});
看不出来啊