PHP: Tekrar deneniyor bir sorgu bir kaç kez ayarlandığı veya başarısı kadar

3 Cevap php

Ben bilinmeyen bir nedenle, bazen başarısız olur, Alexa API bir sorgu yapıyorum. Başarısız yaptığında, ben otomatik olarak 10 kata kadar, sorguyu yeniden denemek istiyorum.

Başarısız olduğunda, API tarafından döndürülen tepki altdizesine içeren AuthFailure.

Döngünün ne tür döndü tepki ya altdizesine AuthFailure ya da 10 deneme denenir olmuştur içermiyor kadar bu sorguyu denenecek yapabilirim?

3 Cevap

Bir for döngü ile bu yapabilirdi.

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

Ne istediğiniz numaraya 10 ayarlayın. Daha da iyisi, define() 'başka ed bir sabit kullanırlar. Dönüş değeri "AuthFailure" içermez kadar denemeden sayısı tükenmiş ya kadar bu sürecek.

Ben böyle bir şey yapmak istiyorum:

define('ALEXA_FAILED', 'AuthFailure');

$response = ALEXA_FAILED;
$tries = 0;

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

Şahsen ben bir işlev eg çağrıyı örtecek:

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

Ben ilave bir param ile bu işlevini genişletmek ve yinelemeli çağırır:

public function getAlexaResponse($aParam, $attempts = 10)
{
   //code that does the call
   if(!strstr($response,"AuthFailure") && ($attempt > 0)){
       $this->getAlexaResponse($aParam, --$attempts);
   }
   return $response;
}