在php中出错后尝试相同的代码

时间:2013-07-21 20:10:34

标签: php try-catch

这可能是一个noob问题。由于服务器过载而在发出错误后尝试相同的代码是否可以。或者避免这种情况的最佳解决方案是什么? 例如,以下是curl请求的一部分:

     $xml = simplexml_load_string($sData);
     $result = ($xml->result);
     $description = ($xml->description);

上面的脚本很少在我的日志文件中提供以下两个E_NOTICE:

E_NOTICE: Undefined variable: result in ...
E_NOTICE: Undefined variable: description in ...

我认为这是因为远程服务器很忙。但如果我在一分钟后尝试卷曲请求就可以了。 避免这种情况的最佳方法是什么?我可以通过捕获抛出的错误来尝试脚本吗?但我没有使用try catch块。请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以尝试循环,直到获得所需(或达到最大值)。例如:

$done = false;
  $tries = 0;  
  do {
  $xml = simplexml_load_string($sData);

  if ( !empty($xml->result) && !empty($xml->description) ) {
    $done = true;
  } else {
    $tries++;
    sleep( 1 );
} while ( !$done && $tries < 10 );
$result = $xml->result;
$description = $xml->description;

我不知道这是否是最佳解决方案,但它应该有效。 (您可以尝试其他检查而不是empty,更改休眠时间和重试次数以适应您的需求,但总的想法就是。

相关问题