我需要读取消息状态,如:未读数,在每个帐户中读取。每个帐户循环从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扩展可以做到这一点