複数箇所にメールを送信するとき、そのままZend_Mailで送信するとけっこう時間がかかる。
どうやらソケットをいちいちつないだりしてるかららしい。
$mail = new Zend_Mail($mailCharset); $mail->addTo('mailaddress@xxxx.xx') ->setFrom('mailaddress@xxxx.xx') ->setSubject('title') ->setBodyText('body'); for($i=0;$i<1;$i++){ $mail->send(); }
うちのサーバーで実行したら140秒かかった。
そこでトランスポートという機能を使う。
$transport = new Zend_Mail_Transport_Smtp('localhost'); $mail = new Zend_Mail($mailCharset); $mail->addTo('mailaddress@xxxx.xx') ->setFrom('mailaddress@xxxx.xx') ->setSubject('title') ->setBodyText('body'); for($i=0;$i<1;$i++){ $mail->send($transport); }
これで5秒になった。
実際に稼動プログラムに組み込んだけどあまりスピードがあがってない。。
きっとまだ調整するところがあるんだろうな。