2015-08-16 29 views
1

我打電話通過GET協議和響應網絡服務會在頁面上呼應出真假。PHP - 如果沒有結果,稍候再試

我想寫將重試多達3次,如果Web服務返回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)); 
       } 
     } 
} 
+0

與計數器遞歸函數是一種替代 – 2015-08-16 04:02:56

回答

2

只需使用一個數組和循環,使任何數量的迭代與任何暫停時間

$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; 
} 
+1

旁註:'$睡眠= [1,10,60];'將失敗PHP <5.4 –

+2

真實的,但不應該使用PHP <5.4在2015年:) –

+1

我知道。但我們不知道他們使用的是哪個版本,*只是說* ;-) –

1

這是我結束了之後@Pavel林特引發的想法對我來說:

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