五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

Timer定時(shí)器

框架對(duì)Swoole毫秒級(jí)定時(shí)器進(jìn)行了封裝,方便開發(fā)者快速上手。

注意??:定時(shí)器傳入的時(shí)間參數(shù)為毫秒,若開啟了 reload_async 配置時(shí),請(qǐng)將定時(shí)器移動(dòng)到自定義進(jìn)程內(nèi),否則會(huì)導(dǎo)致worker進(jìn)程無(wú)法reload

循環(huán)執(zhí)行

設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,每隔一定的時(shí)間定時(shí)觸發(fā),直到進(jìn)行 clear 操作才會(huì)停止,對(duì)應(yīng) Swoole 原生的定時(shí)器函數(shù)為 swoole_timer_tick

函數(shù)原型

/**
* 循環(huán)調(diào)用
* @param int      $ms 循環(huán)執(zhí)行的間隔毫秒數(shù) 傳入整數(shù)型
* @param \Closure $callback 定時(shí)器需要執(zhí)行的操作 傳入一個(gè)閉包
* @param string    $name 定時(shí)器名稱,用于取消該定時(shí)器
* @param mixed ...$params 傳入定時(shí)器的參數(shù)
* @return int 返回整數(shù)型的定時(shí)器編號(hào) 可以用該編號(hào)停止定時(shí)器
*/
public function loop(int $ms, callable $callback, $name = null, ...$params)

示例代碼

// 每隔 10 秒執(zhí)行一次
\EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () {
    echo "this timer runs at intervals of 10 seconds\n";
});

延時(shí)執(zhí)行

設(shè)置一個(gè)延時(shí)定時(shí)器,延時(shí)指定的時(shí)間后觸發(fā)對(duì)應(yīng)的操作,只會(huì)執(zhí)行一次操作,對(duì)應(yīng)Swoole 原生的定時(shí)器函數(shù)為 swoole_timer_after

函數(shù)原型

/**
* 延時(shí)調(diào)用
* @param int      $ms 需要延遲執(zhí)行的時(shí)間
* @param \Closure $callback 定時(shí)器需要執(zhí)行的操作 傳入一個(gè)閉包
* @param mixed ...$params 傳入定時(shí)器的參數(shù)
* @return int 返回整數(shù)型的定時(shí)器編號(hào) 
*/
public function after(int $ms, callable $callback, ...$params)

示例代碼

// 10 秒后執(zhí)行一次
\EasySwoole\Component\Timer::getInstance()->after(10 * 1000, function () {
    echo "ten seconds later\n";
});

清除定時(shí)器

注意: 該操作不能用于清除其他進(jìn)程的定時(shí)器,只作用于當(dāng)前進(jìn)程

定時(shí)器創(chuàng)建成功時(shí),會(huì)返回一個(gè)整數(shù)型編號(hào),調(diào)用本函數(shù)傳入該編號(hào),即可提前停止定時(shí)器,對(duì)應(yīng) Swoole 原生的定時(shí)器函數(shù)為 swoole_timer_clear

函數(shù)原型

/**
* 清除定時(shí)器
* @param mixed $timerIdOrName 定時(shí)器編號(hào)或名稱
* @return bool
*/
public function clear($timerIdOrName)

示例代碼

// 創(chuàng)建一個(gè)2秒定時(shí)器
$timerId = \EasySwoole\Component\Timer::getInstance()->loop(2 * 1000, function () {
    echo "timeout\n";
},'time');

// 清除該定時(shí)器
var_dump(\EasySwoole\Component\Timer::getInstance()->clear($timerId)); // bool(true)
var_dump($timerId); // int(1)

// 定時(shí)器得不到執(zhí)行 不輸出:timeout

應(yīng)用實(shí)例

注意:定時(shí)器不能在服務(wù)啟動(dòng)之前使用。在服務(wù)啟動(dòng)以后,添加的定時(shí)器僅在當(dāng)前進(jìn)程中有效。在 WorkerStart 事件中添加定時(shí)器時(shí),請(qǐng)注意判斷需要添加定時(shí)器的workerId,否則該定時(shí)器在每個(gè)進(jìn)程中均會(huì)被執(zhí)行。

// 為第一個(gè) Worker 添加定時(shí)器
if ($workerId == 0) {
    \EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () {
        echo "timer in the worker number 0\n";
    });
}
public static function mainServerCreate(EventRegister $register)
{
    $register->add(EventRegister::onWorkerStart, function (\swoole_server $server, $workerId) {
        //如何避免定時(shí)器因?yàn)檫M(jìn)程重啟而丟失
        //例如在第一個(gè)進(jìn)程 添加一個(gè)10秒的定時(shí)器
        if ($workerId == 0) {
            \EasySwoole\Component\Timer::getInstance()->loop(10 * 1000, function () {
                // 從數(shù)據(jù)庫(kù),或者是redis中,去獲取下個(gè)就近10秒內(nèi)需要執(zhí)行的任務(wù)
                // 例如:2秒后一個(gè)任務(wù),3秒后一個(gè)任務(wù) 代碼如下
                \EasySwoole\Component\Timer::getInstance()->after(2 * 1000, function () {
                    //為了防止因?yàn)槿蝿?wù)阻塞,引起定時(shí)器不準(zhǔn)確,把任務(wù)給異步進(jìn)程處理
                    Logger::getInstance()->console("time 2", false);
                });
                \EasySwoole\Component\Timer::getInstance()->after(3 * 1000, function () {
                    //為了防止因?yàn)槿蝿?wù)阻塞,引起定時(shí)器不準(zhǔn)確,把任務(wù)給異步進(jìn)程處理
                    Logger::getInstance()->console("time 3", false);
                });
            });
        }
    });
}

經(jīng)典案例-訂單狀態(tài)超時(shí)監(jiān)控

場(chǎng)景說(shuō)明:在很多搶購(gòu)的場(chǎng)景中,訂單下單完成后,需要限制其付款時(shí)間,或者是在棋牌游戲中,需要對(duì)房間狀態(tài)進(jìn)行監(jiān)控。那么我們可以先把待監(jiān)控的訂單或者是房間壓入redis 隊(duì)列中。那么就可以利用 定時(shí)器 + 異步進(jìn)程,去實(shí)現(xiàn)對(duì)訂單狀態(tài)的循環(huán)監(jiān)控。

主站蜘蛛池模板: 国产一国产一级毛片视频在线 | 九九精品九九 | 欧美专区一区二区三区 | 热久久最新视频 | 欧洲精品码一区二区三区免费看 | 国内精品久久久久影院不卡 | 婷婷在线网| 国产成人综合网 | 五月天色网址 | 国产精品视频久久久 | 国产成人在线精品 | 日本你懂的| 成年私人影院免费视频网站 | 日本69色视频在线观看 | 成人在线你懂的 | 毛片在线免费视频 | 国产高清在线免费观看 | 女兵人3未删减版在线观看 暖暖喜欢你电视剧免费观看完整版高清 | 婷婷 综合网站 | 四虎影视成人精品 | 久久99久久| 四虎影视永久在线 | 四虎一区二区三区精品 | 国产91综合 | 成人自拍视频在线 | 婷婷 综合网站 | 久久加久久 | 国产成人视屏 | 国产高清好大好夹受不了了 | 成人在线免费小视频 | 六月丁香网 | 国产精品一区二区资源 | 久久免费99精品久久久久久 | 青青草国产在线视频 | 久久国内 | 婷婷精品在线 | 黄色视屏免费 | 国产在线视频自拍 | 亚洲天堂成人在线 | 99精品在线免费观看 | 日本aⅴ精品一区二区三区久久 |