宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

Swoole定時器實現(xiàn)毫秒級任務(wù)調(diào)度

管理 管理 編輯 刪除

簡介

`Timer` 毫秒精度的定時器,底層基于 `epoll_wait``setitimer` 實現(xiàn),數(shù)據(jù)結(jié)構(gòu)使用`最小堆`,可支持添加大量定時器,使用最小堆數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的定時器,類似 JavaScript 的 `setInterval`,`Swoole` 定時器的添加和刪除,全部為內(nèi)存操作,因此性能是非常高的。

Swoole 中的 `Timer``PHP` 本身的 `pcntl_alarm` 是不同的。`pcntl_alarm` 是基于 `時鐘信號 + tick` 函數(shù)實現(xiàn),一個是最大僅支持到秒,另一個是不支持同時設(shè)定多個定時器程序,性能相對來說會比較差。

間隔時鐘定時器

我們可以通過 `Timer::tick` 來實現(xiàn)間隔時鐘定時器,定時器會持續(xù)觸發(fā),每隔指定時間自動觸發(fā)執(zhí)行回調(diào)函數(shù), 直到調(diào)用 `Timer::clear` 來清除指定的定時器。

$i = 0;

Swoole\Timer::tick(1000, function($id) use ($i) {

   global $i;

   echo "tick id:$id i:$i \n";

   $i++;

});

513c9202305131517487144.png

- 每隔1秒時間觸發(fā)一次回調(diào)函數(shù), 回調(diào)函數(shù)會自動打印一行信息到控制臺。

一次性定時器

需要執(zhí)行一次定時器的時候可以使用 `Timer::after` , 此函數(shù)是一個一次性定時器,與間隔時鐘定時器不同,執(zhí)行完成后就會銷毀,需要注意的是 `Timer::after` 是非阻塞的。

Swoole\Timer::after(2000, function () {

   echo "執(zhí)行一次的after\n";

});

c7248202305131517593843.png

- 2秒后執(zhí)行回調(diào)函數(shù),執(zhí)行完成后自動退出。

清除定時器

? `Timer::after`  執(zhí)行完成后會自動退出,不需要清除,而 `Timer::tick` 沒有清除定時器操作,會一直執(zhí)行,直到程序退出。 當(dāng)不需要定時器的時候,我們可以使用 `Timer::clear` 來達到停止定時器的目的,將對應(yīng)定時器 `id` 傳入該方法即可。

? 注意,`Timer::clear` 不能用于清除其他進程的定時器,只作用于當(dāng)前進程。

$i = 0;

Swoole\Timer::tick(1000, function ($id) use ($i) {

   global $i;

   echo "tick id:$id i:$i \n";

   $i++;

   if ($i > 10) {

       Swoole\Timer::clear($id);

   }

});

31163202305131518142605.png

- 每隔1秒執(zhí)行一次回調(diào)函數(shù),當(dāng) `$i` 自增到10時,關(guān)閉定時器,此時程序會自動退出。

清除所有定時器

? `Timer::clearAll` 用來清除同一進程空間中的計時器?;旧吓c `Timer::clear` 相同,但 `Timer::clearAll` 可以一次性清除所有活動的計時器。

Swoole\Timer::tick(2000, function () {

  echo "tick \n";

});

$str = "Swoole";

Swoole\Timer::after(1000, function() use ($str) {

   echo "Hello, $str\n";

});

Swoole\Timer::clearAll();

結(jié)尾

? 定時器功能可以很方便的實現(xiàn)定時任務(wù),例如 `CRMEB Pro系統(tǒng)` 中的自動取消訂單、自動確認收貨、自動商品上下架、自動到期租戶等操作就是基于 `Timer::tick` 來實現(xiàn)的。

? [CRMEB Pro系統(tǒng)](https://crmeb.com/web/index/pro) 以卓越的系統(tǒng)性能,個性的后臺操作,豐富的營銷功能,精細化的用戶運營,裂變式分銷,個性化傳播,解決電商引流、推廣難題,幫助企業(yè)打造生態(tài)級B2C盈利模式商城。

請登錄后查看

徐斗明 最后編輯于2023-09-13 16:43:32

快捷回復(fù)
回復(fù)
回復(fù)
回復(fù)({{post_count}}) {{!is_user ? '我的回復(fù)' :'全部回復(fù)'}}
排序 默認正序 回復(fù)倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復(fù) {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復(fù)' : '回復(fù)'}}
刪除
回復(fù)
回復(fù)
查看更多
打賞
已打賞¥{{reward_price}}
1669
{{like_count}}
{{collect_count}}
添加回復(fù) ({{post_count}})

相關(guān)推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復(fù)
回復(fù)
問題:
問題自動獲取的帖子內(nèi)容,不準(zhǔn)確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當(dāng)前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服