【发布时间】:2023-04-10 04:40:01
【问题描述】:
我正在 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 在收到 false 时不要停止?
感谢您的帮助。
【问题讨论】:
-
你确定 send() 是退出的原因吗?也可能是脚本超时或 while 循环条件错误。
-
我的测试表明脚本只有在遇到循环的失败部分时才会退出。
-
您是否使用 error_reporting=E_ALL 和 display_errors=true 运行脚本(或密切关注 error.log)?
-
是的,我正在跟踪 error.log,但那里没有任何重要信息。所以我的问题是命令行脚本是否会在遇到错误时退出。这有点奇怪,因为我们几乎在所有地方都使用布尔结果,对吧?
-
不,php-cli 不会因为某些任意函数/方法返回 false 而退出。
标签: php command-line phpmailer