0

这可能是一个菜鸟问题。由于服务器过载而出现错误后是否可以尝试相同的代码。或者避免这种情况的最佳解决方案是什么?例如,以下是 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 ...

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

4

1 回答 1

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,更改睡眠时间和重试计数以适应您的需求,但总体思路是成立的。

于 2013-07-21T20:26:41.777 回答