|
@@ -28,23 +28,15 @@ class SyncSubmitTask extends Command |
|
@@ -28,23 +28,15 @@ class SyncSubmitTask extends Command |
|
28
|
|
28
|
|
|
29
|
public function handle()
|
29
|
public function handle()
|
|
30
|
{
|
30
|
{
|
|
31
|
- $backup = false;
|
|
|
|
32
|
while (true) {
|
31
|
while (true) {
|
|
33
|
- $task_id = $this->getTaskId();
|
|
|
|
34
|
- if ($task_id > 2000000) {
|
|
|
|
35
|
- $backup = true;
|
|
|
|
36
|
- }
|
|
|
|
37
|
- if (empty($task_id)) {
|
|
|
|
38
|
- if ($backup) {
|
|
|
|
39
|
- $this->backup();
|
|
|
|
40
|
- $backup = false;
|
|
|
|
41
|
- }
|
|
|
|
42
|
- sleep(5);
|
32
|
+ $task_id = Redis::rpop('sync_submit_task');
|
|
|
|
33
|
+ if(!$task_id){
|
|
|
|
34
|
+ sleep(3);
|
|
43
|
continue;
|
35
|
continue;
|
|
44
|
}
|
36
|
}
|
|
45
|
$this->output('任务' . $task_id . '开始');
|
37
|
$this->output('任务' . $task_id . '开始');
|
|
46
|
$task_info = SyncSubmitTaskModel::find($task_id);
|
38
|
$task_info = SyncSubmitTaskModel::find($task_id);
|
|
47
|
- if (empty($task_info) || $task_info->status !=2) {
|
39
|
+ if (empty($task_info) || $task_info->status !=3) {
|
|
48
|
$this->output('任务不存在或者已执行');
|
40
|
$this->output('任务不存在或者已执行');
|
|
49
|
continue;
|
41
|
continue;
|
|
50
|
}
|
42
|
}
|
|
@@ -79,31 +71,6 @@ class SyncSubmitTask extends Command |
|
@@ -79,31 +71,6 @@ class SyncSubmitTask extends Command |
|
79
|
}
|
71
|
}
|
|
80
|
}
|
72
|
}
|
|
81
|
|
73
|
|
|
82
|
- public function getTaskId()
|
|
|
|
83
|
- {
|
|
|
|
84
|
- $task_id = Redis::rpop('sync_submit_task');
|
|
|
|
85
|
- $lockKey = 'lock_sync_submit_task';
|
|
|
|
86
|
- if (empty($task_id)) {
|
|
|
|
87
|
- // 获取锁
|
|
|
|
88
|
- if (Redis::setnx($lockKey, 1)) {
|
|
|
|
89
|
- // 设置锁的过期时间,防止死锁
|
|
|
|
90
|
- Redis::expire($lockKey, 10);
|
|
|
|
91
|
- $tasks = SyncSubmitTaskModel::where('status', 0)->limit(100)->get();
|
|
|
|
92
|
- foreach ($tasks as $task) {
|
|
|
|
93
|
- $task->status = 2;
|
|
|
|
94
|
- $task->save();
|
|
|
|
95
|
- Redis::lpush('sync_submit_task', $task->id);
|
|
|
|
96
|
- }
|
|
|
|
97
|
- $task_id = Redis::rpop('sync_submit_task');
|
|
|
|
98
|
- Redis::del($lockKey);
|
|
|
|
99
|
- } else {
|
|
|
|
100
|
- // 未获取到锁
|
|
|
|
101
|
- return '';
|
|
|
|
102
|
- }
|
|
|
|
103
|
- }
|
|
|
|
104
|
- return $task_id;
|
|
|
|
105
|
- }
|
|
|
|
106
|
-
|
|
|
|
107
|
/**
|
74
|
/**
|
|
108
|
* 输出处理日志
|
75
|
* 输出处理日志
|
|
109
|
*/
|
76
|
*/
|
|
@@ -112,31 +79,4 @@ class SyncSubmitTask extends Command |
|
@@ -112,31 +79,4 @@ class SyncSubmitTask extends Command |
|
112
|
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
|
79
|
echo date('Y-m-d H:i:s') . ' | ' . $message . PHP_EOL;
|
|
113
|
return true;
|
80
|
return true;
|
|
114
|
}
|
81
|
}
|
|
115
|
-
|
|
|
|
116
|
- /**
|
|
|
|
117
|
- * 备份数据
|
|
|
|
118
|
- * @author zbj
|
|
|
|
119
|
- * @date 2024/1/23
|
|
|
|
120
|
- */
|
|
|
|
121
|
- public function backup()
|
|
|
|
122
|
- {
|
|
|
|
123
|
- DB::beginTransaction();
|
|
|
|
124
|
- try {
|
|
|
|
125
|
- $table = (new SyncSubmitTaskModel())->getTable();
|
|
|
|
126
|
- $new_table = $table . '_backup_' . date('Ymd');
|
|
|
|
127
|
-
|
|
|
|
128
|
- //重命名当前表
|
|
|
|
129
|
- Schema::rename($table, $new_table);
|
|
|
|
130
|
- //克隆表数据
|
|
|
|
131
|
- DB::statement('CREATE TABLE ' . $table . ' LIKE ' . $new_table);
|
|
|
|
132
|
-
|
|
|
|
133
|
- DB::commit();
|
|
|
|
134
|
-
|
|
|
|
135
|
- $this->output('数据备份成功');
|
|
|
|
136
|
- } catch (\Exception $e) {
|
|
|
|
137
|
- $this->output('数据备份失败' . $e->getMessage());
|
|
|
|
138
|
- DB::rollBack();
|
|
|
|
139
|
- }
|
|
|
|
140
|
- return true;
|
|
|
|
141
|
- }
|
|
|
|
142
|
} |
82
|
} |