我想在使用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>rn" .
"X-Mailer: PHP/" . phpversion());
}
上面的代码一次性将所有电子邮件发送到表中的1000个用户。我希望在发送每封电子邮件之间都有30到60秒的延迟。
看看:http://php.net/manual/en/function.sleep.php.php睡眠函数将脚本执行延迟x秒。
您是否将睡眠函数放入循环中?
这可能是因为,即使您是,mail()请求也只是堆积在一起,直到脚本完成运行。但这是另一个问题:脚本运行所需的时间将是500到1000分钟,比服务器可能允许的最大时间还要长。
然而,使用cron函数,您可以让它每分钟醒来,发送一封电子邮件并终止。