【问题标题】:Continue execution in php after a function call without depending on function execution在函数调用后继续在php中执行而不依赖于函数执行
【发布时间】:2015-10-22 08:32:54
【问题描述】:

这听起来有点奇怪,但我有一种情况,我必须使用 php 邮件功能发送电子邮件。此邮件功能位于子功能中。现在我想完整地执行我的 php 脚本,而不必担心邮件功能的成功或失败。就像我不关心邮件功能是否因为任何错误或其他原因而成功执行,但我希望我的 php 脚本能够完全执行。我怎样才能做到这一点?

提前致谢。

【问题讨论】:

  • 现在怎么办 - 你的脚本停止了还是什么?
  • @ficuscr:邮件不会抛出异常。它只是返回布尔值 false。
  • 我把它读作“邮件代码子例程”——但是点了。那么是关于线程的问题吗?
  • 实际上邮件功能在另一个功能中。但是在使用邮件功能之前,我调用了一个服务来使用 curl 获取一些数据。此服务可能失败或成功。因此,取决于该邮件功能是否会执行。无论如何,try catch 块是否足以确保脚本在任何可能的情况下继续执行?

标签: php exception error-handling


【解决方案1】:

只要你对邮件功能的使用正确,无论邮件发送成功与否,执行邮件功能后你的php脚本都应该继续运行。

您遇到的错误是什么?你总是可以把它包裹在...

try {

} catch(Exception $e) {

}

【讨论】:

  • 我还建议将您尝试发送的邮件的详细信息输出到catch() 中的错误日志中。这样您就可以记录任何失败的检查。
  • 实际上邮件功能在另一个功能中。但是在使用邮件功能之前,我调用了一个服务来使用 curl 获取一些数据。此服务可能失败或成功。因此,取决于该邮件功能是否会执行。无论如何,try catch 块是否足以确保脚本在任何可能的情况下继续执行?
  • Exceptioncatch 是一个顶级级别,它将调用从try 块中的代码抛出的所有错误。您可以有多个捕获来处理可能来自 try 块的各种不同错误。此外,将错误报告设置为 ALL,这样您就可以调试错误并查看实际破坏脚本的原因。
  • 其实我可以。但这种突破只发生在少数情况下,比如 100 人中有 4.5 人。这些都是实时酒店预订。但是,是的,我想我会尝试在本地进行测试,看看是否有任何错误情况。谢谢。
  • 如前所述,在应用程序中留下错误是不好的。您应该将$e->getMessage() 的输出记录到一个您可以不时检查的文件中,找出失败的原因并修复它。我会说给自己发送一封包含错误详细信息的电子邮件通知 - 但你可能不会收到!哈哈
【解决方案2】:

我知道这是几年前的事了,但我一直在寻找类似的东西,我认为这更符合您的需求 - 使用该函数创建一个单独的文件,然后单独调用它 - 基本上作为一个单独的操作:

exec("php mailuser.php > /dev/null 2>&1 &");

来自Prevent PHP From Waiting for mail() function - 有关详细信息,请参阅那里接受的答案。

(如果邮件功能延迟不是问题,那么正常的 try/catch 应该就足够了。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多