这是我的表:
id emails names vip expire
1 1@exp.com name1 1 2015/03/25 12:10:22
2 2@exp.com name2 0
3 3@exp.com name3 1 2015/03/30 09:12:00
4 4@exp.com name4 1 2015/05/01 20:10:11
5 5@exp.com name5 1 2015/03/25 12:10:20
.
.
.
在此代码中:
从仅包含有效帐户的用户的表中调用所有用户。
如果用户帐户已过期,则会停用其帐户并向所有用户发送电子邮件。
但不会向所有用户发送他们的帐户为0或未激活的电子邮件。
活跃= 1 | 不活跃= 0
用户数量为2000万,每天都会添加用户。
我认为应该这样做以循环发送电子邮件。
<?php
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password);
if (!$db)
{
die('Failed to connect to database server!<br>'.mysqli_error());
}
mysqli_select_db($db, $mysql_database) or die('Failed to select database<br>'.mysqli_error());
$update = date("Y-m-d H:i:s");
$sql = "SELECT * FROM ".$mysql_table." WHERE `vip` = '1' AND `expire` <= '".$update."'";
$result = mysqli_query($db, $sql);
if ($data = mysqli_fetch_array($result))
{
$emails = $data['emails'];
$names = $data['names'];
$sql = "UPDATE `".$mysql_table."` SET `vip` = '0' WHERE `vip` = '1' AND `expire` <= '".$update."'";
mysqli_query($db, $sql);
$msg = "Hi ".$names.",\nSecond line of text";
mail($emails, "Expired Account", $msg);
}
mysqli_close($db);
?>
答案 0 :(得分:1)
选择后,您需要一段时间才能为每个人发送电子邮件。
代替:
if ($data = mysqli_fetch_array($result))
试试这个:
while ($data = mysqli_fetch_array($result))
答案 1 :(得分:1)
$count=0
while ....
$count = $count+1;
if ($count <= 70){
// your code to send emails
在此之后,您需要在一小时后发送一些内容,或许您可以在服务器中配置cron。