|
...
|
...
|
@@ -10,7 +10,9 @@ |
|
|
|
namespace App\Console\Commands\SyncFilesImage;
|
|
|
|
|
|
|
|
use App\Models\File\ErrorFile;
|
|
|
|
use App\Models\Geo\GeoQuestion;
|
|
|
|
use Illuminate\Console\Command;
|
|
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
|
|
|
|
class SyncFile extends Command
|
|
|
|
{
|
|
...
|
...
|
@@ -30,21 +32,47 @@ class SyncFile extends Command |
|
|
|
|
|
|
|
|
|
|
|
public function handle(){
|
|
|
|
while (true){
|
|
|
|
$task_id = $this->getTaskId();
|
|
|
|
if(empty($task_id)){
|
|
|
|
sleep(100);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$errorFileModel = new ErrorFile();
|
|
|
|
$lists = $errorFileModel->list(['status'=>0],'id',['id','path'],'asc',1000);//未同步成功的图片及文件
|
|
|
|
foreach ($lists as $k => $v){
|
|
|
|
if(strpos($v['path'], '/181/') !== false ){
|
|
|
|
$code = $this->synchronizationFiles($v['path']);
|
|
|
|
$info = $errorFileModel->read(['id'=>$task_id],['id','path']);
|
|
|
|
if(strpos($info['path'], '/181/') !== false ){
|
|
|
|
$code = $this->synchronizationFiles($info['path']);
|
|
|
|
}else{
|
|
|
|
$code = $this->synchronizationFile($v['path']);
|
|
|
|
$code = $this->synchronizationFile($info['path']);
|
|
|
|
}
|
|
|
|
if(200 == (int)$code){
|
|
|
|
echo date('Y-m-d H:i:s') . '编辑的path为:'. $v['path'] .',主键id:'. $v['id'] . PHP_EOL;
|
|
|
|
echo date('Y-m-d H:i:s') . '编辑的path为:'. $info['path'] .',主键id:'. $info['id'] . PHP_EOL;
|
|
|
|
$errorFileModel->edit(['status'=>2],['id'=>$info['id']]);
|
|
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s') . '编辑的end为:' . PHP_EOL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getTaskId(){
|
|
|
|
$key = 'sync_file_task';
|
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
if(empty($task_id)){
|
|
|
|
$lock_key = 'sync_file_lock';
|
|
|
|
$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',1000);//未同步成功的图片及文件
|
|
|
|
foreach ($lists as $v){
|
|
|
|
Redis::lpush($key, $v['id']);
|
|
|
|
$errorFileModel->edit(['status'=>1],['id'=>$v['id']]);
|
|
|
|
}
|
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
}
|
|
|
|
echo date('Y-m-d H:i:s') . '编辑的end为:' . PHP_EOL;
|
|
|
|
return true;
|
|
|
|
return $task_id;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
...
|
...
|
|