文字列の特定のインスタンスを探して電子メールを並べ替えていますが、時間がかかりすぎます。メールあたりの時間を 0.5 秒に短縮したいと考えています。現在、メールあたり約 2 ~ 2.5 秒かかっています。
これを遅くしている本当にばかげたことをしているのではないかと心配しています-おそらくmysqlまたはzend_emailを使用しています。このコードは、ユーザーの受信トレイで特定のフレーズ「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++;
}
?>