1

我在 PHP 命令行中运行一个循环脚本,它使用 PHPMailer 向客户发送电子邮件。我收到的问题是当 PHPMailer 返回 false 时命令行脚本退出。

这是脚本伪代码:

while(the loop is valid){
    if(mail ID exists){
        set_time_limit(30);
        ..compose mail..
        if($mail->Send()){
            ..Mark as success in database..
            usleep(10000);
        } else {
            ..Mark as failure in database..
            usleep(10000);
        }
    }
    ..continue loop..
}

如果$mail->Send()返回 false,则脚本停止并退出。这是命令行中 PHP 的预期行为吗?如果是这种情况,有没有办法告诉 PHP 在收到错误时不要停止?

感谢您的任何帮助。

4

2 回答 2

2

我猜该$mail->Send()函数(或完全是其他东西)正在引发一个错误,该错误会停止执行您的脚本。

我认为数据库中的值也没有更新?如果是这样,情况就会如此。运行带有错误报告的脚本以确定这一点。

error_reporting(E_ALL);
ini_set('display_errors', true);
于 2010-02-08T10:02:55.930 回答
1

最有可能的错误处理例程(在 else 分支中)调用exit或导致致命错误,让 php 退出。
添加两行调试输出,检查脚本是否进入和离开else分支(成功)。

while(the loop is valid){
     [...]
        } else {
          error_log('Debug: Send() failed. Start error handling');
          ..Mark as failure in database..
          usleep(10000);
          error_log('Debug: Send() failed. End error handling');
        }
     [...]
于 2010-02-08T10:20:54.240 回答