-1

5 つの電子メール アドレスを持つデータベースがあり、問い合わせフォームがあるとします。

ユーザーが連絡先フォームを送信するたびに、フォームは保存されている電子メール アドレスのいずれかに詳細を送信する必要があります。これは私が処理できますが、どのようにしてそれを取得するかについて混乱し始めています*電子メールで提出物を共有します.

すなわち。メールアドレス間で負荷を分散する必要があります。連絡先フォームが送信されるたびに、テーブル内の次のメール アドレスに送信する必要があります。そして、最後のメールに到達したら最初から開始します。

これが深刻な初心者の質問である場合は申し訳ありませんが、これを行うための最良の方法を考えることはできません.

4

3 に答える 3

1

次の 2 つのオプションが思い浮かびます。

  1. 配列からランダムな電子メールアドレスを選択するだけで、各電子メールに順番に送信する必要はありません。これは実装がはるかに簡単になり、大規模でも同じ結果が得られます。

    $my_emails = array('anemail', ...);
    $selected_email = $my_emails[array_rand($my_emails)];
    
  2. 電子メールが送信されるたびにカウンターをインクリメントし、値をデータベーステーブルまたはファイルなどに保持し、カウンターの係数と、選択する必要がある電子メールの数を使用して、電子メールを選択します。

    $counter = fetch_counter();
    $my_emails = array('anemail', ...);
    $index = ($counter + count($my_emails)) % count($my_emails);
    $selected_email = $my_emails[$index];
    $counter++;
    store_counter($counter);
    

私は何年も PHP をプログラミングしていないので、YMMV. あなたは警告されました;)

于 2012-08-11T13:38:13.823 に答える
1

sendcountデフォルト 0 で呼び出されるメール テーブルの追加の列を考えることができます。メールの送信先アドレスを確認するスクリプトでは、次のようにします。

//Get email with least counts
$query="SELECT * FROM emails ORDER BY sendcount ASC LIMIT 1";
$result=mysql_query($query);
$object=mysql_fetch_object($result); //This will store the required email address in $object->email

//Send email...

//Increase counter by one
$query="UPDATE emails SET sendcount=sendcount+1 WHERE id=".$object->id;
mysql_query($query);

このようにして、常にカウントが最小のアドレスにメールを送信します。

于 2012-08-11T13:41:45.957 に答える
0

提出物の類似点を見つけて、これを共有することができます。次に、ツリーを構築し、貪欲なアルゴリズムを使用して電子メールを配布できます。問題は、ビンパッキングまたは vm 共有のようです。

于 2012-08-11T14:59:18.597 に答える