|
...
|
...
|
@@ -51,6 +51,12 @@ class GeoQuestionRes extends Command |
|
|
|
sleep(300);
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
$lock_key = "geo_task_lock:$task_id";
|
|
|
|
if (!Redis::setnx($lock_key, 1)) {
|
|
|
|
$this->output("任务 $task_id 已被其他进程锁定,跳过");
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
Redis::expire($lock_key, 1200); // 1小时自动解锁
|
|
|
|
$this->output('执行的任务ID:' . $task_id);
|
|
|
|
$geoQuestionModel = new GeoQuestion();
|
|
|
|
$taskInfo = $geoQuestionModel->read(['id'=>$task_id]);
|
|
...
|
...
|
@@ -345,8 +351,11 @@ class GeoQuestionRes extends Command |
|
|
|
foreach ($project_ids as $project_id){
|
|
|
|
$ids = GeoQuestion::where(['project_id' => $project_id, 'status' => GeoQuestion::STATUS_OPEN])->where('next_time', '<=', date('Y-m-d'))->pluck('id');
|
|
|
|
foreach ($ids as $id) {
|
|
|
|
//检查任务是否执行过
|
|
|
|
if (!Redis::exists("geo_task_lock:$id")) {
|
|
|
|
Redis::lpush($key, $id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$task_id = Redis::rpop($key);
|
|
|
|
}
|
|
|
|
}
|
...
|
...
|
|