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