IMAP に少し問題があります。基本的に、サーバーに接続してフォルダー名を取得し、フォルダーごとに再接続し、各メッセージをループして、必要なことを実行しています。
物事が次第に遅くなるという事実を除いて、それは機能しています。これで何かアイデアはありますか?問題を引き起こしているのはこのビットにあるように思われるので、imap_body に関係しているというおかしな感じがあります。どういうわけかループごとにこれをクリアする必要がありますか?
私のコードはこれに似ています(ただし、ビットの負荷が削除されています)...
$Mailbox = imap_open("$Hostname", "$Username", "$Password") or die('Error: ' . imap_last_error());
$List = imap_list($Mailbox, "$Hostname", "*");
if(is_array($List))
{
foreach ($List as $Folder)
{
$FolderName = imap_utf7_decode($Folder);
$FolderStream = imap_reopen($Mailbox, "$Folder") or die('Error: ' . imap_last_error());
$FolderCount = imap_num_msg($Mailbox);
for($i=1;$i<=$FolderCount;$i++)
{
$EmailBody = imap_body($Mailbox, $i);
// Do whatever I need here
}
}
}
imap_close($Mailbox);
更新 ホスト名ではなくサーバーのIPアドレスを使用して少し速度を上げました(これはポートの指定に加えてです)が、進行するにつれて物事が遅くなるという問題は依然として残っています.