正在显示
1 个修改的文件
包含
14 行增加
和
4 行删除
| @@ -82,12 +82,22 @@ class SyncSubmitTask extends Command | @@ -82,12 +82,22 @@ class SyncSubmitTask extends Command | ||
| 82 | public function getTaskId() | 82 | public function getTaskId() |
| 83 | { | 83 | { |
| 84 | $task_id = Redis::rpop('sync_submit_task'); | 84 | $task_id = Redis::rpop('sync_submit_task'); |
| 85 | + $lockKey = 'lock_sync_submit_task'; | ||
| 85 | if (empty($task_id)) { | 86 | if (empty($task_id)) { |
| 86 | - $ids = SyncSubmitTaskModel::where('status', 0)->limit(100)->pluck('id'); | ||
| 87 | - foreach ($ids as $id) { | ||
| 88 | - Redis::lpush('sync_submit_task', $id); | 87 | + // 获取锁 |
| 88 | + if (Redis::setnx($lockKey, 1)) { | ||
| 89 | + // 设置锁的过期时间,防止死锁 | ||
| 90 | + Redis::expire($lockKey, 10); | ||
| 91 | + $ids = SyncSubmitTaskModel::where('status', 0)->limit(100)->pluck('id'); | ||
| 92 | + foreach ($ids as $id) { | ||
| 93 | + Redis::lpush('sync_submit_task', $id); | ||
| 94 | + } | ||
| 95 | + $task_id = Redis::rpop('sync_submit_task'); | ||
| 96 | + Redis::del($lockKey); | ||
| 97 | + } else { | ||
| 98 | + // 未获取到锁 | ||
| 99 | + return ''; | ||
| 89 | } | 100 | } |
| 90 | - $task_id = Redis::rpop('sync_submit_task'); | ||
| 91 | } | 101 | } |
| 92 | return $task_id; | 102 | return $task_id; |
| 93 | } | 103 | } |
-
请 注册 或 登录 后发表评论