【发布时间】:2011-04-22 11:49:26
【问题描述】:
我正在整理电子邮件以查找特定的字符串实例,但花费的时间太长。我希望将每封电子邮件的时间缩短到半秒,而目前每封电子邮件大约需要 2-2.5 秒。
我担心我正在做一些非常愚蠢的事情,这会减慢速度 - 可能使用 mysql 或 zend_email。这段代码的作用是检查用户的收件箱中是否有特定的短语“chocolate”,然后将值返回给 jquery ajax 函数。它循环了十次(在这个版本中,它检查了 10 封电子邮件)。如果您看到任何有助于减少加载时间的内容,我们将不胜感激。最初,我认为不包括库会有所帮助,但没有电子邮件打开功能的库速度很快。
我确定我在做一些愚蠢和业余的事情(也许是一些事情)。如果可能,请指出它们。
这是代码...
<?php
$storage = new Zend_Mail_Storage_Imap($imap);
$x=0;
while($x<10)
{
$flags = $storage->getMessage($i)->getFlags();
if(!empty($flags['\Seen']))
{
$read=1;
}
else
{
$read=0;
}
if (strpos($storage->getMessage($i),'chocolate') !== FALSE )
{
$fromaddress = str_replace("'","",$storage->getMessage($i)->from);
$fromaddress = str_replace('"','',$fromaddress);
$sql = "SELECT `senderemail`,`subscribed` FROM email_spam WHERE `useremail` = '$_SESSION[email_address]' AND `senderemail` = '$fromaddress'"; $result = mysql_query($sql) or die (mysql_error());
$num = mysql_num_rows($result);
if($num == 0)
{
$emailmessage = mysql_escape_string($storage->getMessage($i)->getContent());
$sql_insert = "INSERT into `email_spam` (`message`,`useremail`,`senderemail`,`datetime`,`subscribed`) VALUES ('$emailmessage','$_SESSION[email_address]','$fromaddress',now(),1)";// echo $sql_insert;
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
$sql = "SELECT `emailid`,`datetime` FROM email_spam WHERE `useremail` = '$_SESSION[email_address]' ORDER BY `datetime` desc"; $getid = mysql_query($sql) or die (mysql_error());
$num = mysql_num_rows($getid);
echo '<tr><td>'. $fromaddress . '</td>';
echo '<td class="unsubscribe_td" align="center"><input type="submit" value="Unsubscribe Me" class="unsubscribe_button" id="'. mysql_result($getid,0,'emailid') .'"/></td></tr>';
}
}
if ($read==0)
{
$storage->setFlags($i, array(Zend_Mail_Storage::FLAG_RECENT)); //marks as new
}
$i--;
$x++;
}
?>
【问题讨论】:
-
你能把你的代码减少到相关部分吗
-
编辑为只显示最相关的代码部分
-
您的代码的哪些部分很慢?对其进行分析,然后加快这些部分的速度。
-
只需使用profiler 并让分析器向您指出缓慢的部分。毕竟,这就是分析器的用途。
标签: php mysql zend-framework zend-mail