-1

假设我有一个包含 5 个电子邮件地址的数据库,并且我有一个联系表。

每次用户提交联系表格时,表格都需要将详细信息提交到我存储的一个电子邮件地址。这我可以处理,但我开始对如何让它*与电子邮件共享提交感到困惑。

IE。我需要在电子邮件地址之间分担负载。每次提交联系表时,都需要发送到我表中的下一个电子邮件地址。然后在到达最后一封电子邮件时从头开始。

抱歉,如果这是一个严肃的初学者问题,我似乎想不出最好的方法来做到这一点。

4

3 回答 3

1

想到两个选择:

  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

您可以在 email 表中考虑一个额外的列,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

您可以尝试找出提交的相似之处并分享。然后您可以构建一棵树并使用贪心算法来分发电子邮件。问题看起来像 bin-packing 或 vm 共享。

于 2012-08-11T14:59:18.597 回答