作者 邓超

h

... ... @@ -28,6 +28,12 @@ trait DbQuery {
*/
protected int $cache = 0;
/**
* 没有数据时 也缓存
* @var bool
*/
protected bool $cacheNoData = true;
public function getClient()
{
... ... @@ -51,8 +57,9 @@ trait DbQuery {
* @author:dc
* @time 2024/8/14 14:04
*/
public function cache(int $ttl){
public function cache(int $ttl,bool $noData = true){
$this->cache = $ttl;
$this->cacheNoData = $noData;
return $this;
}
... ... @@ -277,7 +284,13 @@ trait DbQuery {
$key = 'data:'.md5(is_string($sql) ? $sql : json_encode($sql));
if(redis()->has($key)){
$this->cache = 0;
return redis()->get($key,$default);
$data = redis()->get($key,$default);
if(!$this->cacheNoData){
if($data || $data === 0){
return $data;
}
}
}
}
$query = $this->query($sql);
... ...
... ... @@ -146,47 +146,47 @@ class Mail {
$pid = $db->value(folderSql::has(['uuid'=>md5($email_id.$folder['pname'])]));
$pid = $pid ? $pid : 0;
// try {
$folder_name = '';
// 已发送
if(in_array('Send',$folder['check'])){
$folder_name = folderAlias('Send');
}
// 草稿
elseif(in_array('Drafts',$folder['check'])){
$folder_name = folderAlias('Drafts');
}
// 垃圾
elseif(in_array('Junk',$folder['check'])){
$folder_name = folderAlias('Junk');
}
// 回收站
elseif(in_array('Trash',$folder['check'])){
$folder_name = folderAlias('Trash');
}
$folder_name = '';
// 已发送
if(in_array('Send',$folder['check'])){
$folder_name = folderAlias('Send');
}
// 草稿
elseif(in_array('Drafts',$folder['check'])){
$folder_name = folderAlias('Drafts');
}
// 垃圾
elseif(in_array('Junk',$folder['check'])){
$folder_name = folderAlias('Junk');
}
// 回收站
elseif(in_array('Trash',$folder['check'])){
$folder_name = folderAlias('Trash');
}
if(!$folder_name){
$fn = explode('/',$folder['parseFolder']);
$folder_name = folderAlias(end($fn));
}
if(!$db->count(folderSql::has(['uuid'=>$uuid]))){
$db->insert(folderSql::$table,[
'email_id' => $email_id,
'folder' => folderAlias($folder_name),
'origin_folder' => $folder['folder'],
'uuid' => $uuid,
'pid' => $pid
],false);
}else{
$db->update(folderSql::$table,[
'email_id' => $email_id,
'folder' => folderAlias($folder_name),
'origin_folder' => $folder['folder'],
'uuid' => $uuid,
'pid' => $pid
],dbWhere(['email_id' => $email_id,'uuid' => $uuid]),false);
}
if(!$folder_name){
$fn = explode('/',$folder['parseFolder']);
$folder_name = folderAlias(end($fn));
}
if(!$db->count(folderSql::has(['uuid'=>$uuid]))){
$db->insert(folderSql::$table,[
'email_id' => $email_id,
'folder' => folderAlias($folder_name),
'origin_folder' => $folder['folder'],
'uuid' => $uuid,
'pid' => $pid
],false);
}else{
$db->update(folderSql::$table,[
'email_id' => $email_id,
'folder' => folderAlias($folder_name),
'origin_folder' => $folder['folder'],
'uuid' => $uuid,
'pid' => $pid
],dbWhere(['email_id' => $email_id,'uuid' => $uuid]),false);
}
// }catch (\Throwable $e){
// 这里就不处理失败了
// 这里就不处理失败了
// }
unset($folders[$fk]);
... ... @@ -251,7 +251,7 @@ class Mail {
$blacklist = redis()->get('blacklist:'.$email_id);
$blackFolder = '';
if($blacklist){
$blackFolder = $db->value(folderSql::originFolder($email_id,'垃圾箱'));
$blackFolder = $db->cache(86400*30)->value(folderSql::originFolder($email_id,'垃圾箱'));
}
//
... ... @@ -281,11 +281,10 @@ class Mail {
$uids = array_column($uids,'UID');
$existsUids = $db->all(listsSql::getUids($email_id,$folder_id,$uids));
if($existsUids){
$existsUids = array_column($existsUids,'uid');
// 获取不存在数据库的uid
$uids = array_diff($uids,$existsUids);
foreach ($uids as $k=>$uid){
if($db->cache(86400*30,false)->value(listsSql::first(dbWhere(['email_id'=>$email_id,'folder_id'=>$folder_id,'uid'=>$uid]),'count(*) as c'))){
unset($uids[$k]);
}
}
... ... @@ -313,7 +312,7 @@ class Mail {
$unseen = $db->count(listsSql::listCount(dbWhere([
'seen' => 0,
'deleted' => 0,
'email_id' => $email_id,
// 'email_id' => $email_id,
'folder_id' => $folder_id,
])));
$db->update(
... ... @@ -445,7 +444,7 @@ class Mail {
if(php_sapi_name()=='cli'){
go(function ($id,$header,$data){
new syncMail($id,$header,$data);
},
},
...[$id,$header,$data]
);
}
... ...