【发布时间】:2016-09-13 06:55:26
【问题描述】:
我正在尝试运行执行以下 PHP 代码的 cron 作业:
<?php
require 'public_html/db.php';
mysql_query("SET NAMES utf8");
$aa = mysql_query("SELECT * from send where sent='0' LIMIT 20");
while($rw = mysql_fetch_array($aa)) {
$id = $rw ['id'];
$email = $rw ['email'];
$nick_sent= $rw ['nick'];
$nick_rw = $rw ['nick_pr'];
require 'public_html/mailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom('info@mymail.com', 'Email');
$mail->addReplyTo('info@mymail.com', 'Email');
$mail->addAddress($email);
$mail->IsHTML(true);
$mail->Subject = 'Message';
$mail->Body = 'My message';
$mail->CharSet = "utf-8";
if ($mail->send()) {
mysql_query("UPDATE send SET sent = '1' WHERE id='$id'");}
}
?>
如果我直接通过浏览器访问该文件,它会完美运行。但是,如果通过 cron 作业运行它,它只会执行一次 while 代码......这意味着它只会从 MySQL 数据库中拉出第一行并发送一封电子邮件,而它应该拉出多行并发送多封电子邮件。你们能帮帮我吗?谢谢。
【问题讨论】:
-
也许 GoDaddy 会阻止从 cron 内发送多于一封电子邮件?尝试将返回的行数放入您的电子邮件中,以查看查询实际返回的内容。
-
可能是您的服务提供商阻止了批量邮件。ask godaddy
-
请使用require_once代替require,并从循环中取出
-
非常感谢@Yair.R。它有效!