<?php

//error_reporting();

include_once __DIR__."/../vendor/autoload.php";

$runNumber = 1000;
// 循环阻塞
while ($runNumber){
    $runNumber--;
    // 需要同步的id
    $id = redis()->lPop('sync_email_lists');

    if($id && is_numeric($id)){

        // 占用当前的id,占用2小时
        if(redis()->add('just_sync_'.$id,time(),600)){

            try{
                // 开始同步
                $email = db()->cache(3600)->first(\Model\emailSql::first($id));
                if($email){
                    $sync = new \Service\SyncMail($email);
                    // ai邮件只同步2天内的
                    $sync->search(
                        (new \Lib\Imap\ImapSearch())
                            ->dateGt(date('Y-m-d',strtotime("-1 day")))
                    );
                    $sync->isUidAfter(2)->sync();

                    $sync = null;
                    unset($sync);
                }

            }catch (Throwable $e){
                logs('sync : '.$e->getMessage());
            }

            // 30秒后 消除占用
            redis()->expire('just_sync_'.$id,120);

            // 写入日志
            \Lib\Log::getInstance()->write();
        }
    }else{
        break;
    }
}