- microtime: documentation ( source)
<?php
function igorRetry($retries, callable $fn)
{
beginning:
try {
return $fn();
} catch (\Exception $e) {
if (!$retries) {
throw new \Exception('', 0, $e);
}
$retries--;
goto beginning;
}
}
$fn = function() {
if ($GLOBALS['counter'] > 0)
{
$GLOBALS['counter']--;
throw new \Exception('Try again');
}
return 'something successfull';
};
$start = microtime(true);
try {
$GLOBALS['counter'] = 999999;
igorRetry(1000000, $fn);
} catch (\Exception $e) {}
echo 'Igor retry finished in: ' . (microtime(true) -$start) . "\n";