何らかの不明な理由により、時々失敗するAlexa APIへのクエリを実行しています。それが失敗すると、自動的にクエリを10回まで再試行します。PHP:クエリを一定回数または成功するまで再試行する
失敗した場合、APIによって返される応答には、サブ文字列AuthFailure
が含まれています。
返される応答にサブ文字列AuthFailure
が含まれていないか、10回の再試行が試行されるまで、どのようなループを実行すればクエリを再試行できますか?
何らかの不明な理由により、時々失敗するAlexa APIへのクエリを実行しています。それが失敗すると、自動的にクエリを10回まで再試行します。PHP:クエリを一定回数または成功するまで再試行する
失敗した場合、APIによって返される応答には、サブ文字列AuthFailure
が含まれています。
返される応答にサブ文字列AuthFailure
が含まれていないか、10回の再試行が試行されるまで、どのようなループを実行すればクエリを再試行できますか?
for
ループでこれを行うことができます。
for($i=0; $i < 10; $i++) {
$return = (Alexa call here)
if(!strstr($return,"AuthFailure"))
break;
}
希望する数値に10を調整します。さらに良い方法は、定数define()
を別の場所で使うことです。これは試行回数がなくなるまで、または戻り値に "AuthFailure"が含まれなくなるまで実行されます。
私はこのような何かをしたい:私は、追加の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++;
}
は個人的に私は、関数などで呼び出しを包むだろうそれは再帰的に:
あなたは休憩したい、続行しないでください。 –