2011-07-23 28 views
3

請告訴我如何製作延時功能來延時功能!延時功能PHP

DelayCommand(functionToDelay, Delaytime); 

..?在PHP 5.3+

感謝您的幫助

回答

3
function delayCommand($callback, $delayTime) { 
    sleep($delayTime); 
    $callback(); 
} 
+2

有睡眠的問題是,雖然它影響即使它位於一個函數內,也是全局級的頁面。這意味着您不能在頁面中間使用此功能。爲了證明我的觀點,如果將計時器設置爲5秒並在頁面中間使用該函數,則頁面的前半部分將加載,但後半部分不會加載5秒。這種退步使得睡眠對我來說似乎是一個非常無用的功能。 –

1

這應該工作,可考慮改用了sleep()usleep()

function DelayCommand($functionToDelay, $delayTimeInSeconds) { 
    sleep($delayTimeInSeconds); 
    $functionToDelay(); 
} 

DelayCommand(function() { echo "yes"; }, 5); 

(代碼是未經測試)

1
function delayCommay($function, $nano){ 
    usleep($nano); 
    $function(); 
} 

會做的伎倆但它是同步的。所以如果你打電話給delayCommand它會延遲你的整個腳本,直到它運行命令。

1

如果你想它異步進行的,看到我的答案在這裏:Scheduling php scripts

爲了您的信息,下面是相關功能列表:

  • sleep()/usleep() - 用於量(微)睡眠秒。
  • time_sleep_until() - 睡眠直到時間戳。
  • time_nanosleep() - 睡眠時間爲數秒和納秒。
0

以下是我對延緩MS,睡眠和Usleep功能暫停整個腳本的執行,這似乎工作得很好

public function DelayTime($ms){ 
     $now = microtime(); 
     $finishtime = ($now + $ms); 

     while($now < $finishtime){ 
      $now = time(); 
      if($now >= $finishtime){ break; } 
     } 
     return true; 
    }