swoole 定時器

swoole_timer_tick(int $ms,callable $callback,mixed $param=null);swoole

tick定時器是一個永久定時器,使用tick方法建立的定時器會一直運行,每隔指定的毫秒數以後執行一次callback函數。在建立定時器的時候,能夠經過tick函數的第三個參數,傳遞一些自定義參數到callback回調函數中。另外,也能夠使用PHP的閉包(use關鍵字)實現傳參。具體實例以下:(每隔1秒輸出hello world)閉包

$str = "hello";
$timer_id = swoole_timer_tick(1000,function($timer_id,$params)use($str){
    echo  $str," ",$params,PHP_EOL;
},"world");

tick函數會返回定時器的id。當咱們再也不須要某個定時器的時候,能夠根據這個id,調用swoole_timer_clear函數刪除定時器。須要注意的是,建立的定時器是不能跨進程的,所以,在一個Worker進程中建立的定時器,也只能在這個Worker進程中刪除,這一點必定要注意(使用$worker_id變量來區分Worker進程);函數

 

after定時器是一個臨時定時器。使用after方法建立的定時器僅在指定毫秒數以後執行一次callback函數,執行完成後定時器就會刪除。after定時器的回調函數不接受任何參數,能夠經過閉包方式傳遞參數,也能夠經過類成員變量的方式傳遞。具體實例以下:spa

// 2秒後 輸出」Say Hello「
swoole_timer_after(2000, function() use($test){ // 閉包
    $test->onAfter(); 
});
相關文章
相關標籤/搜索