多数のメンバー (例: 5000 メンバー) に共通のメールを送信する必要があります。
SMTPサーバーを使用してこれを送信する必要があります。
この 5000 メンバーのメール ID をデータベースから取得します。
1 時間ごとに新しいメンバーがデータベース テーブルに追加されます。
例えば
1時間後、会員数は6000人に
タスクを分割して、これらすべてのメンバーにメールを送信するのに最適な方法はどれですか
多数のメンバー (例: 5000 メンバー) に共通のメールを送信する必要があります。
SMTPサーバーを使用してこれを送信する必要があります。
この 5000 メンバーのメール ID をデータベースから取得します。
1 時間ごとに新しいメンバーがデータベース テーブルに追加されます。
例えば
1時間後、会員数は6000人に
タスクを分割して、これらすべてのメンバーにメールを送信するのに最適な方法はどれですか
curl で非同期で実行してみてはどうでしょうか。この方法では、6000 メンバーをループしても、実行時間が長いためにファイルがタイムアウト応答を受け取ることはありません。
function send($params) {
foreach($params as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'http://localhost/anotherfiletosendemail.php');
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch,CURLOPT_POST,count($params));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_exec($ch);
curl_close($ch);
}
メールが送信されたメンバーを追跡する方法を作成し (データベース テーブルのブール値など)、X 人にメールを送信するスクリプトを作成し、Y 回ごとにこのスクリプトを実行するように cron を構成できます。
メンバー数の増加が遅くならず、例と一致する場合は、1 時間に 1000 を超えるメッセージを出力するようにスクリプトと cron を構成する必要があります (たとえば、スクリプトが 100 のメッセージを送信する場合、スクリプトは 1 時間に 10 回以上実行する必要があります)。約 5 分ごとに 1 時間)。
メンバー数の増加が次第に遅くなる場合は、すべてのメンバーがメールを確実に受信できるようにするために必要な時間枠がどれだけ大きくなるかということになります。
別の方法として、Ogun が提案したようなメッセージ ブローカーを使用します。
メッセージブローカーが必要です。http://www.rabbitmq.com/またはhttp://www.zeromq.org/が役に立ちます。