質問
私は、専用のIPを過負荷にせずに、1つのPHPスクリプトの要求からおよそ3000 +メールを送ることができる方法はあります...最高時速500でしょうか?
あなたが私を得るいけない場合は...ここに詳細です:)
私は私の専用IP経由で時速PHPでメール()関数を経由して500通の電子メールを送信することができ、私は、例えば、電子メール・アドレスから引き出された電子メールの3000行を送信しますが(メールをずらす可能性がどのような方法)があります時速500用の機能アウト...
すでにありがとうございます。
解決
2つのテーブル、電子メールメッセージ用と受信者のリストのための1つを作成します。 そして、メッセージテーブル内の新しいメッセージがあるかどうかをチェックするcronで実行するスクリプトを作成し、その受信者の次のセットに電子メールのバッチを送信する場合。メールが送信された後、各受信者をマークします。
ユーザーがcronジョブがそれを拾って、それを処理して行くな状態とメッセージをマークしたら、そして、あなたがメッセージを作成し、メッセージに受信者を接続するクライアントのためのWebインタフェースを作成します。
何もしない、あなたのcronジョブを送信する。すべてのメッセージが存在しない場合は、
他のヒント
あなたは、彼らがすでにデータベースに存在している場合、それらが送られた時に言うことそこにフィールドを配置し、呼び出しの間に眠る、または可能性があります。そして、あなたが送信されていないものを選択して、そこから起動します。
私は最後の電子メールが各ユーザーに送信され、どのような電子メールだったときに表示するDBのフィールドを置きます。それはまだすべてのユーザーに送信された場合、私はまた、あなたが送信された各電子メールを表示するには、別のDBテーブルを持っていると考えています。
User Table:
Id, UserName, Email, etc, DateTimeOfLastEmail, LastEmailId
Email Table:
Id, EmailSubject, EmailContent, DateTimeSent, SentToAll(True/False), DateTimeOfFinish
すべての答えてくれてありがとう! 私が見つけた最良の方法は、単純に(スリープ状態に実際にあった)睡眠を使用して呼び出しの間()私は400通のメールをテストしたように、これは17秒かかった:)
ユーザーが450の限界を超えて送信されますそうです...しかし、彼らがしなければ、私はしばらく前にif文を(持っている)450の以上の行がある場合ので、それはそれぞれの間でスリープする場合は、チェックを終了します。 ...これは手間のかかるデータベースなしで動作します。)
ありがとうございます。
だけでなく、いくつかの数学をやった後、あなたは、電子メールごとに8.3秒(498 /時)を送ることができるが、それは問題を解決していません。私は別のアプローチは、500用DB、クエリを使用して、cronジョブが毎時間スクリプトを実行するために持っていることだと思います。
あなたは電子メールが送信された後、次のcronジョブを照会して送信する必要が次の500通の電子メールを取得するようにスクリプトがフィールドを更新するかもしれないDBテーブル中のSOます。