_retryCount = $count; $this->_retryInterval = $intervalBetweenRetries; } /** * Execute function under retry policy * * @param string|array $function Function to execute * @param array $parameters Parameters for function call * @return mixed */ public function execute($function, $parameters = array()) { $returnValue = null; for ($retriesLeft = $this->_retryCount; $retriesLeft >= 0; --$retriesLeft) { try { $returnValue = call_user_func_array($function, $parameters); return $returnValue; } catch (Exception $ex) { if ($retriesLeft == 1) { require_once 'Zend/Service/WindowsAzure/RetryPolicy/Exception.php'; throw new Zend_Service_WindowsAzure_RetryPolicy_Exception("Exceeded retry count of " . $this->_retryCount . ". " . $ex->getMessage()); } usleep($this->_retryInterval * 1000); } } } }