...
|
...
|
@@ -30,16 +30,8 @@ class SyncToEsCmd { |
|
|
$es = (new Lib\Es\Es('hg_ai_emails'));
|
|
|
$db = db();
|
|
|
|
|
|
$maxNum = 10000; // 最大执行数量
|
|
|
$minTime = 60; // 最小执行时间 秒
|
|
|
$maxTime = 1200; // 最大执行时间 秒
|
|
|
$runTime = time(); // 开始执行时间
|
|
|
while ($maxNum > 0){
|
|
|
// 验证最大执行时间
|
|
|
if(time() - $runTime > $maxTime){
|
|
|
_echo('超过进程最大执行时间');
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
while (1){
|
|
|
|
|
|
// 检查是否接收到信号
|
|
|
pcntl_signal_dispatch();
|
...
|
...
|
@@ -48,36 +40,27 @@ class SyncToEsCmd { |
|
|
_echo('已退出进程');
|
|
|
break;
|
|
|
}
|
|
|
$maxNum--;
|
|
|
|
|
|
$id = redis()->lPop('sync_to_es');
|
|
|
if($id){
|
|
|
$data = $db->first(\Model\listsSql::first('`id` = '.$id));
|
|
|
$data = $db->throw()->first(\Model\listsSql::first('`id` = '.$id));
|
|
|
if($data){
|
|
|
// 设置 进程 是否在运行
|
|
|
$data['is_auto']=$db->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0;
|
|
|
$data['is_auto']=$db->throw()->count('select count(*) from `lists_auto` where `list_id` = '.$data['id']) ? 1 : 0;
|
|
|
|
|
|
$data = $this->getEsData($data);
|
|
|
$doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid'];
|
|
|
|
|
|
$code = $es->save($doc_id,$data);
|
|
|
if($code!==200){
|
|
|
sleep(1);
|
|
|
$code = $es->save($doc_id,$data); // 重试一次
|
|
|
}
|
|
|
if($code!==200){
|
|
|
@file_put_contents(LOG_PATH.'/sync_es_fail.log',$id."\n",FILE_APPEND);
|
|
|
redis()->rPush('sync_to_es',$id);
|
|
|
_echo('同步es: '.$doc_id.'===>'.$code);
|
|
|
}
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// _echo('没有找到数据');
|
|
|
|
|
|
if(time() - $runTime > $minTime){
|
|
|
_echo('最小执行时间 退出');
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
sleep(1);
|
|
|
}
|
|
|
|
...
|
...
|
|