2009-04-03 15 views
0

何らかの不明な理由により、時々失敗するAlexa APIへのクエリを実行しています。それが失敗すると、自動的にクエリを10回まで再試行します。PHP:クエリを一定回数または成功するまで再試行する

失敗した場合、APIによって返される応答には、サブ文字列AuthFailureが含まれています。

返される応答にサブ文字列AuthFailureが含まれていないか、10回の再試行が試行されるまで、どのようなループを実行すればクエリを再試行できますか?

答えて

4

forループでこれを行うことができます。

for($i=0; $i < 10; $i++) { 
    $return = (Alexa call here) 
    if(!strstr($return,"AuthFailure")) 
     break; 
} 

希望する数値に10を調整します。さらに良い方法は、定数define()を別の場所で使うことです。これは試行回数がなくなるまで、または戻り値に "AuthFailure"が含まれなくなるまで実行されます。

+0

あなたは休憩したい、続行しないでください。 –

2

私はこのような何かをしたい:私は、追加のparamとコールしてその機能を拡張します

public function getAlexaResponse($aParam) 
{ 
    //code that does the call 
    return $response; 
} 

define('ALEXA_FAILED', 'AuthFailure'); 

$response = ALEXA_FAILED; 
$tries = 0; 

while ($tries <= 10 && stripos($response, ALEXA_FAILED) !== FALSE) 
{ 
    $response = GetAlexaResponse(); 
    $tries++; 
} 
0

は個人的に私は、関数などで呼び出しを包むだろうそれは再帰的に:

関連する問題