【发布时间】:2014-07-14 18:53:06
【问题描述】:
我需要阅读消息状态,例如:未读数量,已读每个帐户。每个帐户都是循环从mysql获取登录数据的。当登录成功时,发送已读和未读的数量。问题是从 mysql 处理所有帐户 (17) 大约需要 2 分钟。如何让它更快。理想的时间在 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 分钟的时间来处理。我怎样才能让它更快?
问候,
【问题讨论】:
-
做一些时间来解决瓶颈。我不认为这是 MySQL。我敢肯定,大部分时间都花在等待 IMAP 答案上。
-
谢谢VMai有什么解决办法吗?
-
我建议在三个部分中重写您的代码:1)将您的数据库中的完整数据读取到一个数组(行)中,2)将 IMAP 数据从这些数组中获取到第二个数组中, 3) 编写您的 HTML 输出。因此,您可以轻松衡量在这些部分花费的时间。
-
让我说清楚。 $login_array=array("用户 A"=>"pw_A","用户 B"=>"pw_B"); $imap_array=array("msg_1"=>array("subj"=>"xxx","detail"=>"xxx"));然后呢?