正在显示
1 个修改的文件
包含
42 行增加
和
57 行删除
| @@ -100,67 +100,52 @@ class Home extends Base { | @@ -100,67 +100,52 @@ class Home extends Base { | ||
| 100 | * @time 2023/8/2 16:19 | 100 | * @time 2023/8/2 16:19 |
| 101 | */ | 101 | */ |
| 102 | public function sync(){ | 102 | public function sync(){ |
| 103 | - $emails = web_request_emails(); | ||
| 104 | - $udate = app()->request('udate'); | ||
| 105 | - if(!$udate || !is_array($udate)){ | ||
| 106 | - return ''; | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - // 查询邮箱 | ||
| 110 | - $emails = db()->all(emailSql::all(dbWhere(['email'=>$emails]))); | ||
| 111 | - if(!$emails){ | 103 | + $email = $this->getEmail(); |
| 104 | + $udate = app()->request('udate',0,'intval'); | ||
| 105 | + if(!$udate){ | ||
| 112 | return ''; | 106 | return ''; |
| 113 | } | 107 | } |
| 114 | - | ||
| 115 | - // 启用协程来处理 | ||
| 116 | - run(function () use ($emails,$udate){ | ||
| 117 | - foreach ($emails as $email){ | ||
| 118 | - // 读取文件夹 | ||
| 119 | - $fids = $this->getFolderIds($email['id']); | ||
| 120 | - $folders = db()->all(folderSql::all($email['id'])); | ||
| 121 | - // 循环 文件夹 | ||
| 122 | - foreach ($folders as $folder){ | ||
| 123 | - // 是否在同步请求中 | ||
| 124 | - if(in_array($folder['id'],$fids)){ | ||
| 125 | - // 启动 协程 | ||
| 126 | - go(function () use ($email,$udate,$folder){ | ||
| 127 | - // 实例一个邮箱对象 | ||
| 128 | - $mail = new Mail($email['email'],base64_decode($email['password']),$email['imap']); | ||
| 129 | - // 登录 | ||
| 130 | - $mail->login(); | ||
| 131 | - // 选择 文件夹 | ||
| 132 | - $mail->client->selectFolder($folder['origin_folder']); | ||
| 133 | - // 最后的时间 | ||
| 134 | - $maxudate = db()->value( | ||
| 135 | - sprintf( | ||
| 136 | - "select max(`udate`) from `%s` where `email_id` = %d and `folder_id` = %d limit 1", | ||
| 137 | - listsSql::$table, | ||
| 138 | - $email['id'], | ||
| 139 | - $folder['id'] | ||
| 140 | - ) | ||
| 141 | - ); | ||
| 142 | - $udate = ($udate[$email['email']]??0) > $maxudate ? $udate : $maxudate; | ||
| 143 | - | ||
| 144 | - // 通过时间来搜索uid | ||
| 145 | - $uids = $mail->client->search(['ON'=>date('Y-m-d H:i:s',$udate)]); | ||
| 146 | - // 进行同步 | ||
| 147 | - $mail->syncUidEmail( | ||
| 148 | - $uids, | ||
| 149 | - $email['id'], | ||
| 150 | - $folder['origin_folder'], | ||
| 151 | - $folder['id'], | ||
| 152 | - [], | ||
| 153 | - [], | ||
| 154 | - db() | ||
| 155 | - ); | ||
| 156 | - | ||
| 157 | - }); | ||
| 158 | - } | ||
| 159 | - } | ||
| 160 | - | 108 | + // 读取文件夹 |
| 109 | + $fids = $this->getFolderIds($email['id']); | ||
| 110 | + $folders = db()->all(folderSql::all($email['id'])); | ||
| 111 | + // 启动 协程 | ||
| 112 | + // 实例一个邮箱对象 | ||
| 113 | + $mail = new Mail($email['email'],base64_decode($email['password']),$email['imap']); | ||
| 114 | + // 登录 | ||
| 115 | + $mail->login(); | ||
| 116 | + | ||
| 117 | + // 循环 文件夹 | ||
| 118 | + foreach ($folders as $folder){ | ||
| 119 | + // 是否在同步请求中 | ||
| 120 | + if(in_array($folder['id'],$fids)){ | ||
| 121 | + // 选择 文件夹 | ||
| 122 | + $mail->client->selectFolder($folder['origin_folder']); | ||
| 123 | + // 最后的时间 | ||
| 124 | + $maxudate = db()->value( | ||
| 125 | + sprintf( | ||
| 126 | + "select max(`udate`) from `%s` where `email_id` = %d and `folder_id` = %d limit 1", | ||
| 127 | + listsSql::$table, | ||
| 128 | + $email['id'], | ||
| 129 | + $folder['id'] | ||
| 130 | + ) | ||
| 131 | + ); | ||
| 132 | + $udate = $udate > $maxudate ? $udate : $maxudate; | ||
| 133 | + | ||
| 134 | + // 通过时间来搜索uid | ||
| 135 | + $uids = $mail->client->search(['ON'=>date('Y-m-d H:i:s',$udate)]); | ||
| 136 | + // 进行同步 | ||
| 137 | + $mail->syncUidEmail( | ||
| 138 | + $uids, | ||
| 139 | + $email['id'], | ||
| 140 | + $folder['origin_folder'], | ||
| 141 | + $folder['id'], | ||
| 142 | + [], | ||
| 143 | + [], | ||
| 144 | + db() | ||
| 145 | + ); | ||
| 161 | } | 146 | } |
| 147 | + } | ||
| 162 | 148 | ||
| 163 | - }); | ||
| 164 | 149 | ||
| 165 | } | 150 | } |
| 166 | 151 |
-
请 注册 或 登录 后发表评论