Php 什么';使用zend_mail对电子邮件进行排序最有效的方法是什么?
我正在整理电子邮件,寻找字符串的特定实例,这花费了太长的时间。我想把每封邮件的时间缩短到半秒,目前每封邮件大约需要2-2.5秒 我担心我正在做一些非常愚蠢的事情,这会减慢速度——可能是通过mysql或zend_电子邮件。这段代码的作用是检查用户收件箱中的特定短语“chocolate”,然后将值返回给jquery ajax函数。它循环10次(在这个版本中,它检查10封电子邮件)。如果您看到任何有助于缩短加载时间的内容,我们将不胜感激。起初,我认为不包括这些库会有帮助,但没有电子邮件打开功能的库是闪电般的快 我肯定我在做一些愚蠢和业余的事情(也许是一些事情)。如果可能,请指出 这是密码Php 什么';使用zend_mail对电子邮件进行排序最有效的方法是什么?,php,mysql,zend-framework,zend-mail,Php,Mysql,Zend Framework,Zend Mail,我正在整理电子邮件,寻找字符串的特定实例,这花费了太长的时间。我想把每封邮件的时间缩短到半秒,目前每封邮件大约需要2-2.5秒 我担心我正在做一些非常愚蠢的事情,这会减慢速度——可能是通过mysql或zend_电子邮件。这段代码的作用是检查用户收件箱中的特定短语“chocolate”,然后将值返回给jquery ajax函数。它循环10次(在这个版本中,它检查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++;
}
?>
分析这一点没有意义——这只是一种错误的方法。您正在为每条消息执行单独的IMAP请求和数据传输,这永远不会很快。最有效的方法是根本不在这里进行搜索——让IMAP服务器为您进行搜索。它可能没有您现在所做的那么灵活,但每秒搜索成千上万条消息不会有问题,而且它肯定可以在消息体中进行简单的字符串匹配。在IMAP扩展中。我不知道该函数是否通过任何Zend组件公开,但它是否公开并不重要
这正是iPhone收件箱搜索使用的机制;它对已经存在的邮件进行本地搜索,但随后提供了在服务器上继续搜索的选项,这会让已经获得数据并且有更大马力的邮件产生影响。分析这一点没有意义-这只是错误的方法。您正在为每条消息执行单独的IMAP请求和数据传输,这永远不会很快。最有效的方法是根本不在这里进行搜索——让IMAP服务器为您进行搜索。它可能没有您现在所做的那么灵活,但每秒搜索成千上万条消息不会有问题,而且它肯定可以在消息体中进行简单的字符串匹配。在IMAP扩展中。我不知道该函数是否通过任何Zend组件公开,但它是否公开并不重要
这正是iPhone收件箱搜索使用的机制;它对已经存在的邮件进行本地搜索,但随后提供了在服务器上继续搜索的选项,这将使已获得数据且具有更大马力的邮件可以进行搜索。您是否可以将代码重新采购到相关部分请仅显示代码的最相关部分什么部分你的代码速度慢吗?对其进行分析,然后加快这些部分的速度。只需使用分析工具,让分析工具向您指出缓慢的部分。毕竟,这就是分析器的作用。你能将你的代码重新采购到相关部分吗?请只显示代码中最相关的部分。你的代码中哪些部分比较慢?对其进行分析,然后加快这些部分的速度。只需使用分析工具,让分析工具向您指出缓慢的部分。毕竟,这就是剖析器的用途。