спать — если нет результатов, подождите и попробуйте снова

Я звоню в веб-сервис по протоколу 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));
}
}
}

1

Решение

Просто используйте массив и цикл, чтобы сделать любое количество итераций с любым временем паузы

$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;
}
2

Другие решения

Вот чем я закончил после того, как @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; }
}
1

По вопросам рекламы [email protected]