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