PHP命令行脚本退出false

时间:2010-02-08 09:44:06

标签: php command-line phpmailer

我在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在收到错误时不要停止?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我猜想$mail->Send()函数(或其他完全不正确的函数)会抛出一个错误,即停止执行脚本。

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

error_reporting(E_ALL);
ini_set('display_errors', true);

答案 1 :(得分: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');
        }
     [...]