さて、ここに私の問題があります:
私は Web サイトにメンバーのリストを持っており、定期的に私のサイトの管理者 (Web や技術にあまり詳しくない) の 1 人がメンバーリストにニュースレターを送信します。私の現在のメンバーリストは、800 人をはるかに超えています。
そこで、Bcc ヘッダーにリストされたメンバーを含む完全なメンバーリストに電子メールを送信する電子メール スクリプトを作成しました。
しかし、私のホスト サーバーには 1 時間あたり 300 通の電子メールの制限があることがわかりました。メンバーが Bcc フィールドにリストされていても、明らかにそれを超えています。(Bcc の動作が、リストの名前ごとに個別のメールを送信することだとは、以前は知りませんでした...)
しばらく考えた結果、スクリプトで最初の 300 通のメールにのみメールを送信し、1 時間待ってから次の 300 通に 2 通目のメールを送信し、さらに 1 時間待つことが唯一の解決策であるという結論に達しました。というように、メンバー リスト全体にメールを送信するまで続けます。
インターネットを見回すと、PHP でメールを遅らせるために人々が思いついた他のソリューションがいくつか見られました。スクリプトを開いたまま 3 ~ 4 時間実行したままにしておくことはできないため、Sleep() は明らかにオプションではありません。cron ジョブを提案する人を見たことがありますが、メールを送信するたびに 3 つの新しい cron ジョブを作成し、それらを 1 回使用してから削除することがどれほど実現可能かはわかりません。私が見た最後の(そして私が最も賢いと思う)解決策は、遅延して後で送信される電子メールを一時的に保存するテーブルをデータベースに作成し、このSQLテーブルを1時間ごとにチェックするcronジョブを作成することですまたは、行のタイムスタンプを現在のタイムスタンプと比較し、1 時間が経過した場合に電子メールを送信します。
そこで皆さんにおすすめの方法を教えてください。私が完全に調べたより簡単な解決策はありますか(別のホスティングプランを取得することは別として.ha!)、またはデータベース/ cronジョブアプローチよりもクリーンな方法はありますか?
tl;dr: 1 時間あたり 300 通に制限されているサーバーで、1 時間に送信するメールが 800 通を超えています。PHP を使用して、電子メールの送信者が「送信」をクリックするだけで済むように、この問題を回避する方法を見つけてください。