sync_to_es.php
1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?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); // 重试一次
}
}
}
}