首頁  >  文章  >  php框架  >  swoole怎麼實現定時任務

swoole怎麼實現定時任務

WBOY
WBOY原創
2022-02-14 14:30:463128瀏覽

方法:1、利用「swoole_timer_after(時間, 執行的函數)」語句在指定的時間後執行任務;2、利用「swoole_timer_tick(時間, 執行的函數,回調函數)」語句設定一個間隔時鐘定時器定時執行任務。

swoole怎麼實現定時任務

本教學操作環境:Windows10系統、Swoole4版、DELL G3電腦

swoole怎麼實作定時任務

#swoole_timer_after

在指定的時間後執行函數,需要swoole-1.7.7以上版本。

swoole_timer_after(int $after_time_ms, mixed $callback_function);

swoole_timer_after函數是一個一次性計時器,執行完成後就會銷毀。此函數與PHP標準函式庫提供的sleep函數不同,after是非阻塞的。而sleep呼叫後會導致目前的進程進入阻塞,將無法處理新的請求。

  • $after_time_ms 指定時間,單位為毫秒

  • $callback_function 時間到期後所執行的函數,必須是可以呼叫的。 callback函數不接受任何參數

  • $after_time_ms 最大不得超過86400000

##使用範例

swoole_timer_after(1000, function(){
    echo "timeout\n";
});

swoole_timer_tick

設定一個間隔時鐘定時器,與after定時器不同的是tick定時器會持續觸發,直到呼叫swoole_timer_clear清除。與swoole_timer_add不同的是tick定時器可以存在多個相同間隔時間的計時器。

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

  • $ms 指定時間,單位為毫秒

  • $callback_function 時間到期後所執行的函數,必須是可以呼叫的。 callback函數不接受任何參數

  • $param 回呼參數

  • $ms 最大不得超過86400000

#tick定時器在1.7.14以上版本可用

tick計時器即將要取代swoole_timer_add

回呼函數

計時器觸發的回呼函數接受2個參數。

function onTimer(int $timer_id, mixed $params = null);

  • $timer_id 定時器的ID,可用於swoole_timer_clear清除此計時器

  • $params 由swoole_timer_tick傳入的使用者參數

使用範例

swoole_timer_tick(1000, function(){
    echo "timeout\n";
});

推薦學習:

swoole教學

以上是swoole怎麼實現定時任務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn