这可能是一个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块。请帮助我解决这个问题。
答案 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
,更改休眠时间和重试次数以适应您的需求,但总的想法就是。