メールを大量に送信したい場合、mb_send_mail() ではなくPEAR::Mail あるいは PEAR::Mail_Queueを使用した方がいいとのこと。
mb_send_mailはメール送信の際にSMTPソケットを開閉するので、タイムアウトの原因になるんだとか。
参考サイトは以下の通りです。
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1016176975
www.drk7.jp/MT/archives/000890.html
ml.php.gr.jp/pipermail/php-users/2005-September/027438.html
あと、メールログが貯まりすぎて止まってしまうのではないか、という見解があったのでそちらも載せておきます。
oshiete1.watch.impress.co.jp/qa2507654.htmlokwave.jp/qa1167364.html
ちなみに、mb_send_mail()が大量のメール配信に向いていないことはドキュメントにもしっかり載ってます(笑)
mb_send_mailはメール送信の際にSMTPソケットを開閉するので、タイムアウトの原因になるんだとか。
参考サイトは以下の通りです。
detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1016176975
www.drk7.jp/MT/archives/000890.html
ml.php.gr.jp/pipermail/php-users/2005-September/027438.html
あと、メールログが貯まりすぎて止まってしまうのではないか、という見解があったのでそちらも載せておきます。
oshiete1.watch.impress.co.jp/qa2507654.htmlokwave.jp/qa1167364.html
ちなみに、mb_send_mail()が大量のメール配信に向いていないことはドキュメントにもしっかり載ってます(笑)
PR
ファイル名が被らないようにするために現在時刻を使用するとき、ミリ秒まで入れる方法をメモしておきます。
[式]
$hoge = date("YmdHis") . sprintf("%03d", (int)((float)microtime() * 1000));
ただし、ファイル名が被ってしまう確率は0にはならないので、「固有IDがふれない」かつ「まぁ被ってしまったらやり直してもらえばOK」なときだけ使用可能。
つまり、よっぽどぬるくないと使えません(笑)
むしろsprintf関数で「3」→「003」のように直してる部分の方がメモのし甲斐があるように思えます。
[式]
$hoge = date("YmdHis") . sprintf("%03d", (int)((float)microtime() * 1000));
ただし、ファイル名が被ってしまう確率は0にはならないので、「固有IDがふれない」かつ「まぁ被ってしまったらやり直してもらえばOK」なときだけ使用可能。
つまり、よっぽどぬるくないと使えません(笑)
むしろsprintf関数で「3」→「003」のように直してる部分の方がメモのし甲斐があるように思えます。