投稿者 |
メッセージ |
|
< PHPプログラミング ~ 大量にメールを送った場合のタイムアウトについて |
|
時間:
金 4月 21, 2006 5:22 pm
|
|
|
|
初めて投稿します。
○やりたい事
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件分送信させるにはどうすれば良いですか? |
|
|
|
|
|
|
|
時間:
土 4月 22, 2006 11:09 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
php.iniで最大実行時間を調整できます→max_execution_time
あるいは、こういった処理は、system関数などでフォークさせて、バッチプログラムにやらせるのが妥当な処理かと。 |
|
|
|
|
|
|
|
時間:
日 4月 23, 2006 7:53 am
|
|
|
|
しもやんさん、ありがとうございました。
タイムアウトの時間を変更する方法では一時しのぎになるので、
バッチ処理を組むことを考えてみます。
また分からないことがあったら教えてください。 |
|
|
|
|
|
|
|
時間:
月 4月 24, 2006 12:59 pm
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
|
|
|
|
|
時間:
火 4月 25, 2006 10:39 am
|
|
|
|
ちびさん、ありがとうございました。完全に勉強不足でした。
早速pearを使って組んでみます。
ありがとうございました。 |
|
|
|
|
|
|
|