質問: お世話になります。PHPでのメール配信に関して質問、アドバイスのほどお願いします。 現在、kagoyaのマネージド専用サーバーを借りており、メール配信テストを行っているのですが、期待するような動作が確認できず、皆様のご意見を頂戴出来ればと、質問いたします。 現在の状況は、以下の通り。思い付きで箇条書きで書き留めます。 1. メール配信はデータベースを参照しながら配信。 2. メール数は、3万件程度。 3. バックグラウンドで配信するため、exec("nohup php -c '' 'mail.php' 'start'> /dev/null &");のスクリプトを介し別ファイルで実行。 4. メール配信はsendmail。10通に1秒を開けながら送信。 5. 借りているサーバーは専用サーバーだが、メールサーバーは共有サーバーとのこと。 6. 上記仕様で送信テストを行ったら、3万件送信するつもりが、2万5千件でストップ。時間にして2時間以上。 7. バックグラウンドで送信せず、直接送信ファイルにアクセスをして送信すると、約1万7千件を送信した辺りでタイムアウト。 このような状況ですが、 1.バックグラウンドで送信したとき、デバッグをとる場合はどうしたらよろしいのですか? 2.メールを確実に送るにはどうしたらよいのでしょうか? 3.送信スピードを上げるにはどうしたよろしいのでしょうか? 以上、抽象的な質問になっているようで恐縮ですが、皆様のご意見を頂戴したく質問させていただきました。 色々なご意見があるかと思います。よろしくお願いいたします。
回答: 幾つか確認はさせていただきたいので追記修正依頼に書かせていただいておりますが、 現時点で分かる内容にて回答させていただきます。 > > 1.バックグラウンドで送信したとき、デバッグをとる場合はどうしたらよろしいのですか? > > > ・error_log()を利用 ・`file_put_contents()`に`FILE_APPEND`をつけて日時と出力したい内容を入れて、みたいな感じのお手製ログ出力 > > メールを確実に送るにはどうしたらよいのでしょうか? > > 3.送信スピードを上げるにはどうしたよろしいのでしょうか? > > > 下記の質問が参考になるでしょうか。 PHP メール一括送信について あとは適当な送信数に達したらPHP自体を一度終了させて定期実行で送信対象がなくなるまで繰り返す、ですかね。