php出错后尝试相同的代码


trying the same code after error in php

这可能是一个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 ...

我想是因为远程服务器当时很忙。但如果我在一分钟后尝试卷曲请求,效果会很好。避免这种情况的最佳方法是什么?我可以通过捕捉抛出的错误来尝试脚本吗?但我没有用过尝试接球的盖帽。请帮我解决这个问题。

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

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