Я звоню в веб-сервис по протоколу GET, и ответ будет отображаться на странице как true или false.
Я пытаюсь написать логику, которая будет повторяться до 3 раз, если веб-служба возвращает false. Тем не менее, в первый раз я хочу подождать 1 секунду, во второй раз я хочу подождать 10 секунд, а в третий раз я хочу подождать 60 секунд.
Это то, что у меня сейчас есть. Есть ли лучший способ добиться этого?
if ($wsReturn == 'false') {
sleep(1);
$wsReturn = strip_tags(file_get_contents($link));
if ($wsReturn == 'false') {
sleep(10);
$wsReturn = strip_tags(file_get_contents($link));
if ($wsReturn == 'false') {
sleep(60);
$wsReturn = strip_tags(file_get_contents($link));
}
}
}
Просто используйте массив и цикл, чтобы сделать любое количество итераций с любым временем паузы
$i = 0;
$sleep = [1, 10, 60];
while( $wsReturn == 'false' )
{
sleep( $sleep[$i] );
// your logic goes here
$wsReturn = strip_tags(file_get_contents($link));
if( ++$i >= count($sleep) )
break;
}
Вот чем я закончил после того, как @Pavel Lint вызвал для меня эту идею:
$i = 0;
$waitTimes = array();
$waitTimes = [1, 10, 30]
while ($wsReturn == 'false') {
sleep( $waitTimes[$i] );
$wsReturn = strip_tags(file_get_contents($link));
$++i
if ($i >= count($waitTimes)-1) { break; }
}