投稿者 メッセージ
<  PHPプログラミング  ~  大量にメールを送った場合のタイムアウトについて
tackn
投稿1時間: 金 4月 21, 2006 5:22 pm  引用



登録日: 2006年4月 21日
投稿記事: 4

初めて投稿します。

○やりたい事
 200名程度の宛先に対して、異なる本文のメールを送信する
○条件
 CSVファイルに宛先・氏名等のデータが格納されており、
 このファイルを1行ずつ読み込んで本文を作成し、順次メールを送信する。
○ソース例
<?php
ini_set("sendmail_from","aaa@bbb.com");
ini_set("SMTP","ccc.com");
mb_language("Japanese");
mb_internal_encoding('SJIS');

$file = fopen("./address.csv","r");
while($aryData = fgetcsv($file,200,",")){
$mail = $aryData[0]; //送信先
$subject = "新製品発表会のご来場ありがとうございました!";
$message = $aryData[1]."\n"; //企業名
$message.= $aryData[2]."\n"; //所属
$message.= $aryData[3]."\n"; //役職
$message.= $aryData[4]."様\n"; //担当者名
$message.="\n";
$message.="昨日は、新製品発表会にご来場いただきまして、\n";
$message.="誠にありがとうございました。\n\n";
mb_send_mail($mail,$subject,$message,$bcc);
echo " {$aryData[4]}様にメールを送信しました。<br>";
}
?>

○結果
××様にメールを送信しました。
△△様にメールを送信しました。

Fatal error: Maximum execution time of 30 seconds exceeded in D:\Apache Group\Apache2\htdocs\php-Files\send-mail.php on line・・

※タイムアウトらしきエラーメッセージが出るため、数件(3〜5件)単位でしかメール送信できない。

○教えていただきたいこと
・タイムアウトを発生させずに、200件分送信させるにはどうすれば良いですか?
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 土 4月 22, 2006 11:09 am  引用



登録日: 2006年3月 23日
投稿記事: 48

php.iniで最大実行時間を調整できます→max_execution_time

あるいは、こういった処理は、system関数などでフォークさせて、バッチプログラムにやらせるのが妥当な処理かと。
トップに移動
ユーザー情報を表示 メッセージを送信
tackn
投稿1時間: 日 4月 23, 2006 7:53 am  引用



登録日: 2006年4月 21日
投稿記事: 4

しもやんさん、ありがとうございました。

タイムアウトの時間を変更する方法では一時しのぎになるので、
バッチ処理を組むことを考えてみます。

また分からないことがあったら教えてください。
トップに移動
ユーザー情報を表示 メッセージを送信
ちぴ
投稿1時間: 月 4月 24, 2006 12:59 pm  引用



登録日: 2006年4月 05日
投稿記事: 14

mb_send_mail()はmail()のラッパー関数なので、マニュアルのmail()を見ると分かりますが、mb_send_mail()は大量のメールアドレスを送信するのには向いていません。

↓mail()の下のほうに記述上がります。
http://phpspot.net/php/man/php/function.mail.html

同マニュアルに沿って、pearを使った方が良いのではないでしょうか?

↓paer::Mail
http://fol.axisz.jp/php/man/pear/package.mail.html

個人的にはCSVファイルの読込みと、メールの送信は切り分けた方が良いような気がします。
トップに移動
ユーザー情報を表示 メッセージを送信
tackn
投稿1時間: 火 4月 25, 2006 10:39 am  引用



登録日: 2006年4月 21日
投稿記事: 4

ちびさん、ありがとうございました。完全に勉強不足でした。
早速pearを使って組んでみます。
ありがとうございました。
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.