4

ニュースレターの購読者に電子メールを送信するページを作成する必要があります。14000 人以上の加入者がいます。php mail() 関数を使用して電子メールを送信したいと考えています。しかし、PHP の 30 秒の max_execution_time 制限のために、すべてのサブスクライバーにメールを送信することができないのではないかと心配しています。テスト メールをサブスクライバーに送信して、送信できるメールの量をテストすることはできません。したがって、30 秒の max_execution_time 制限で mail() 関数を使用して送信できるメールの量を知りたいです。お答えいただけると大変助かります。

また別の質問 - mysql の実行時間も php でカウントされますか?

Apache バージョン 2.2.13 (Unix) PHP バージョン 5.2.11

4

5 に答える 5

4

PHPmax_execution_time設定はカスタマイズ可能です。30秒がデフォルトですが、0実行時間の制限がまったくない場合は秒に設定できます。set_time_limit()を使用します。

set_time_limit(0);

これを行うと、すべてのメールを送信できるはずです。

1 秒間に同じメール サーバーに複数のメールを送信しないように注意してください。ブラックリストに載りたくありません。

于 2009-11-03T23:16:53.030 に答える
3

これを cronjob から実行するか、バックグラウンド タスクを生成するか、バッチ ジョブに適した別のものを使用する必要があります。

メールサーバーが十分に高速な場合、30 秒で 14000 通の電子メールを送信できるかもしれませんが、さらに数人の購読者を獲得して適切に機能しなくなったらどうなるでしょうか?

おそらく、各ユーザーのデータベースにフラグを設定し、バックグラウンド タスクによって電子メールが送信されるときにフラグをリセットすることができます。メールサーバーに問題がある場合、重複などを避けるのに役立ちます。

于 2009-11-03T23:18:26.820 に答える
2

それは非常に多くの変数に依存するため、単一の答えは不可能です。要因は次のとおりです。

  1. CPUの速度
  2. 送信側システムから MTA への利用可能な帯域幅
  3. 電子メールを受け入れる MTA の容量

見つける唯一の方法は、それを試すことです。

于 2009-11-03T23:18:49.487 に答える
0

私のプロジェクトの1つで、この正確な問題がしばらく前に発生しました。解決策は、電子メール送信を実際のサイトから分離することです。

メールを送信するために呼び出される小さなクラスをコーディングしました。テンプレート化された電子メールが渡され、それがデータベースのメール キューに保存されます。バックエンドには、X 秒ごとにメーラー スクリプトを呼び出す cron ジョブがありました。スクリプトはメールのデータベース キューを調べ、キューから X 番号を取得して送信を試み (タイムスタンプの順序で)、配信を試みます。エラーがスローされなかったと仮定すると、スクリプトはメッセージを送信済みとしてマークします。次のステップは、送信済みで X 日以上経過したすべての電子メールをキューからパージすることです (ログ記録のために保持されます)。

お役に立てば幸いです。

于 2009-11-03T23:59:09.667 に答える
-4

真剣に、通常のメールアプリから同じメールを 10 人に送信したい場合、通常は同じメールを 10 個作成しますか?それとも、受信者を送信リストに追加してからメールを送信しますか?

編集:答えが「一度送信する」である場合、ここでもその方向を見る必要があると思います(http://www.php.net/mailで複数の受信者に送信する方法についても説明されています)

于 2009-11-03T23:19:28.753 に答える