作者 赵彬吉

update

... ... @@ -82,12 +82,22 @@ class SyncSubmitTask extends Command
public function getTaskId()
{
$task_id = Redis::rpop('sync_submit_task');
$lockKey = 'lock_sync_submit_task';
if (empty($task_id)) {
$ids = SyncSubmitTaskModel::where('status', 0)->limit(100)->pluck('id');
foreach ($ids as $id) {
Redis::lpush('sync_submit_task', $id);
// 获取锁
if (Redis::setnx($lockKey, 1)) {
// 设置锁的过期时间,防止死锁
Redis::expire($lockKey, 10);
$ids = SyncSubmitTaskModel::where('status', 0)->limit(100)->pluck('id');
foreach ($ids as $id) {
Redis::lpush('sync_submit_task', $id);
}
$task_id = Redis::rpop('sync_submit_task');
Redis::del($lockKey);
} else {
// 未获取到锁
return '';
}
$task_id = Redis::rpop('sync_submit_task');
}
return $task_id;
}
... ...