如何执行功能直到成功为止?

Sta*_*arx 3 php email

我正在编写一个函数来发送邮件给特定用户?

我想要做的是,如果发生错误,我想继续发送邮件,直到邮件发送.

    function sendmail() {
        $name = mysql_escape_string($name);
        $email = mysql_escape_string($email);
        $phone = mysql_escape_string($phone);
        $content = nl2br(mysql_escape_string($content));
        $subject = "mail from ".$name." (".$email.", Ph: ".$phone.")";
        $mail = @mail($feedback,$subject,$content,$headers);
        if($mail) { echo "Your mailis send"; }
        else { echo "We are sorry for the inconvienience, but we could not send your mailnow."; }
}   
Run Code Online (Sandbox Code Playgroud)

上面的函数显示错误消息,但我想尝试发送邮件,直到最后发送邮件为止.

Gab*_*iel 18

错误处理设计:

如果页面无法发送怎么办?守护进程停止,用户输入格式错误的数据,连接丢失,可能写入磁盘,数据库已关闭以进行维护等等.您希望服务器对用户请求做什么?我建议在以后重试失败时设置队列.那里有很多好的队列系统.Cron如果必须重试(这样就不会挂在客户端请求上).记录尝试,如果出现某些错误情况,则通知管理员.

这是运营/基础架构团队的基础,但您可以从一些好的工具和精心设计的错误和异常处理策略开始.继承您代码的人会感谢您.

我一直在阅读实用程序员,我必须强烈推荐它专门处理这个问题.它为您考虑错误/异常处理的方式设置了一个标准,对于我来说,我确实清除了关于错误是什么,异常,断言条件(或不可能的条件)的迷雾.特别是第4章语用偏执狂:

"当每个人真的出去找你时,偏执狂只是好思考" - 伍迪艾伦

  • 我认为尝试5次是用户滥用.当用户坐在那里等待发现发生的事情时,服务器将循环那段时间.尝试一次,如果你成功通知用户,如果你失败告诉用户它将很快发送并排队(感谢Will对其进行拼写检查). (4认同)