Я вызываю веб-службу через протокол GET, и ответ будет отображаться на странице как истинный или ложный.
Я пытаюсь написать логику, которая будет повторять попытку до трех раз, если веб-служба вернет 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; } }