[PHP-users 29381] Re: セグメンテーションエラーについて
Reiji Matsumoto
matsumoto @ spline.oc.to
2006年 6月 12日 (月) 18:30:37 JST
松本と申します。
> >ループで回しPEAR::Mailで配信しております。メモリ使いすぎが原因という事で
あれ
Mail::factory()メソッドでインスタンスを生成する時、第一パラメーター
にはsmtpが指定されていますでしょうか。
その場合、send()メソッドを利用するたびに解放されないメモリが
少しずつ蓄積されて、いずれ動かなくなってしまいます。
該当する場合はlib/php/Mail/smtp.php の182行目付近に
$smtp->disconnect();
return true;
と、あると思いますので、
$smtp->disconnect();
unset($smtp);
return true;
と、してみて下さい。本当はエラーで返った時にもインスタンスを削除すべき
ですが、取りあえず正常終了時のみの設定で動くと思います。
気になる場合はsend()関数内で'return'で検索し、それぞれのreturnの直前で
unset($smtp)とするとよいかも知れません。
逆にpearのソースに手を加えるのに抵抗があったり運用上不可能な場合は、
1通送るたびにMail::factory()で作成したインスタンスをunsetすると良
いと思います。
smtp以外の方法でインスタンスを生成している場合は知りませんが、ひょっと
したら同じような問題があるかも知れませんね。
PHP-users メーリングリストの案内