作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !3274
@@ -61,20 +61,26 @@ class SyncFile extends Command @@ -61,20 +61,26 @@ class SyncFile extends Command
61 $task_id = Redis::rpop($key); 61 $task_id = Redis::rpop($key);
62 if(empty($task_id)){ 62 if(empty($task_id)){
63 $lock_key = 'sync_file_lock'; 63 $lock_key = 'sync_file_lock';
64 - $lock_ttl = 60; // 锁时间大于当前 锁功能执行时间  
65 - // 尝试获取锁,非阻塞方式 64 + $lock_ttl = 60;
  65 + // 尝试获取锁
66 $lock = Redis::set($lock_key, 1, 'EX', $lock_ttl, 'NX'); 66 $lock = Redis::set($lock_key, 1, 'EX', $lock_ttl, 'NX');
67 if (empty($lock)){ 67 if (empty($lock)){
68 return $task_id; 68 return $task_id;
69 } 69 }
  70 + try {
70 $errorFileModel = new ErrorFile(); 71 $errorFileModel = new ErrorFile();
71 - $lists = $errorFileModel->list(['status'=>0],'id',['id','path'],'asc',2000);//未同步成功的图片及文件 72 + $lists = $errorFileModel->list(['status'=>0],'id',['id','path'],'asc',2000);
72 foreach ($lists as $v){ 73 foreach ($lists as $v){
73 Redis::lpush($key, $v['id']); 74 Redis::lpush($key, $v['id']);
74 $errorFileModel->edit(['status'=>1],['id'=>$v['id']]); 75 $errorFileModel->edit(['status'=>1],['id'=>$v['id']]);
75 } 76 }
76 $task_id = Redis::rpop($key); 77 $task_id = Redis::rpop($key);
  78 + } finally {
  79 + // 释放锁
  80 + Redis::del($lock_key);
77 } 81 }
  82 + }
  83 +
78 return $task_id; 84 return $task_id;
79 } 85 }
80 86