sync_to_es.php 1.4 KB
<?php

//error_reporting();

require_once "../vendor/autoload.php";

function getEsData($data){
    if(!empty($data['id'])){
        $data['uuid'] = $data['id'];
        unset($data['id']);
    }
    if(!empty($data['from'])){
        $data['from'] = [
            'email' =>  $data['from'],
            'name'  =>  $data['from_name']??''
        ];
        unset($data['from_name']);
    }
    unset($data['date']);
    if(!empty($data['created_at'])){
        $data['created_at'] = date('Y-m-d\TH:i:s',strtotime($data['created_at']));
    }
    if(!empty($data['updated_at'])){
        $data['updated_at'] = date('Y-m-d\TH:i:s',strtotime($data['updated_at']));
    }
    $data['references'] = empty($data['references']) ? '' : $data['references'];
    return $data;
}

$db = db();
$es = (new Lib\Es\Es(''));
while (1){
    $id = redis()->lPop('sync_to_es');
    if($id){
        $data = $db->first(\Model\listsSql::first('`id` = '.$id));
        if($data){

            $data['is_auto']=$db->count('select count(*) from `lists_auto` where `list_id` = '.$data['uuid']) ? 1 : 0;

            $data = getEsData($data);
            $doc_id = $data['email_id'].'_'.$data['folder_id'].'_'.$data['uid'];

            $code = $es->save($doc_id,$data);
            if($code!=200){
                sleep(1);
                $es->save($doc_id,$data); // 重试一次
            }
        }
    }

}