1

我想在使用 phpmail() 函数向用户发送每封电子邮件之间添加大约 30 到 60 秒的延迟。我正在从表中获取用户电子邮件数据并使用 while 循环,并且数据库表中有大约 1000 个用户。我希望在重复此 while 循环的语句时有所延迟,以便在该特定用户之后将每封电子邮件发送给下一个用户。我正在使用以下代码:

$sql = "select * from users where `user_email` = '$_REQUEST[q]' or `user_name`='$_REQUEST[q]' ";

$rs_results = mysql_query($sql) or die(mysql_error());   

while ($rrows = mysql_fetch_array($rs_results)) {

$fullname = $rrows['full_name'];
$usermailid = $rrows['user_email'];
$username = $rrows['user_name'];

$message =
"Hello $fullname  \n
Welcome to My Site \n
The rest of the message";

mail($usermailid, "Important Message - from Site Admin", $message,
    "From: \"Mysite Admin\" <auto-reply@mysite.com>\r\n" .
     "X-Mailer: PHP/" . phpversion()); 
}

上面的代码一次性将所有电子邮件一起发送给表中的 1000 个用户。我希望在发送每封电子邮件之间应该有 30 到 60 秒的延迟

4

2 回答 2

0

看看: http: //php.net/manual/en/function.sleep.php。php sleep 函数将脚本执行延迟 x 秒。

于 2013-02-04T09:31:54.707 回答
0

您是否将睡眠功能放在循环中?

可能是这样,即使您是,mail() 请求也只是堆积起来,直到脚本完成运行。但这是另一个问题:您的脚本运行时间将是 500 到 1000 分钟 - 比您的服务器可能允许的最大值更长。

但是,使用 cron 功能,您可以让它每分钟唤醒一次并发送一封电子邮件并终止。

于 2016-07-10T20:14:53.660 回答