如何使用imap更快地读取多个消息状态


How to read multiple message status with imap faster

我需要读取消息状态,如:未读数,在每个帐户中读取。每个帐户循环从mysql获取登录数据。登录成功后,发送已读数和未读数。问题是它需要大约2分钟来处理所有帐户(17)从mysql。如何让它更快。理想的时间在10-30秒之间。这可能吗?

下面是我的代码:
$sql_sImap=mysqli_query($con,"select * from LOGIN_DB order by imap_user asc");
while($rec_sImap=mysqli_fetch_array($sql_sImap)){
    $inbox=imap_open("{mail.xxx:143/novalidate-cert}INBOX", "$rec_sImap[imap_user]" , "$rec_sImap[imap_pw]");
    $num=imap_status($inbox,"{mail.xxx:143/novalidate-cert}INBOX", SA_ALL);
    $total=$num->messages;
    $unread=$num->unseen;
    $read=$total-$unread;

    echo "
    <tr>
        <td><a href='"main.php?do=mail&action=view&sid=$rec_sImap[imap_sid]'">$rec_sImap[imap_user]</a></td>
        <td>".number_format($unread)."</td>
        <td>".number_format($read)."</td>
        <td>".number_format($total)."</td>
        <td><a href='"main.php?do=mail&action=del_user&sid=$rec_sImap[imap_sid]'">del</a></td>
    </tr>
    ";
    $unread="";
    $read="";
    $total="";
}

正如我上面提到的。这几行代码花了我将近2分钟的时间来处理。我怎样才能使它更快呢?

认为,

您的代码在一系列中执行与每个IMAP服务器的同步连接;这意味着您必须等待每个连接建立,包括TLS会话握手。这是一件昂贵的事情。您最大的希望是切换到一些支持异步连接的IMAP库,这样您就可以同时打开多个TCP套接字,并行执行SSL/TLS会话握手,并同时在多个套接字上运行必要的IMAP聊天。我不认为PHP的库存IMAP扩展可以做到这一点