|
...
|
...
|
@@ -61,20 +61,26 @@ class SyncFile extends Command |
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
if(empty($task_id)){
|
|
|
|
$lock_key = 'sync_file_lock';
|
|
|
|
$lock_ttl = 60; // 锁时间大于当前 锁功能执行时间
|
|
|
|
// 尝试获取锁,非阻塞方式
|
|
|
|
$lock_ttl = 60;
|
|
|
|
// 尝试获取锁
|
|
|
|
$lock = Redis::set($lock_key, 1, 'EX', $lock_ttl, 'NX');
|
|
|
|
if (empty($lock)){
|
|
|
|
return $task_id;
|
|
|
|
}
|
|
|
|
$errorFileModel = new ErrorFile();
|
|
|
|
$lists = $errorFileModel->list(['status'=>0],'id',['id','path'],'asc',2000);//未同步成功的图片及文件
|
|
|
|
foreach ($lists as $v){
|
|
|
|
Redis::lpush($key, $v['id']);
|
|
|
|
$errorFileModel->edit(['status'=>1],['id'=>$v['id']]);
|
|
|
|
try {
|
|
|
|
$errorFileModel = new ErrorFile();
|
|
|
|
$lists = $errorFileModel->list(['status'=>0],'id',['id','path'],'asc',2000);
|
|
|
|
foreach ($lists as $v){
|
|
|
|
Redis::lpush($key, $v['id']);
|
|
|
|
$errorFileModel->edit(['status'=>1],['id'=>$v['id']]);
|
|
|
|
}
|
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
} finally {
|
|
|
|
// 释放锁
|
|
|
|
Redis::del($lock_key);
|
|
|
|
}
|
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $task_id;
|
|
|
|
}
|
|
|
|
|
...
|
...
|
|