您好,登錄后才能下訂單哦!
這篇文章主要介紹了swoole中可不可以設(shè)置多個定時器,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
首先,在各種業(yè)務(wù)型系統(tǒng)中,往往需要服務(wù)器在后臺掃描相關(guān)數(shù)據(jù),觸發(fā)相應(yīng)的統(tǒng)計、通知等操作。
比如對于一個項目管理系統(tǒng),需要每天的特定時間內(nèi),統(tǒng)計每項任務(wù)的執(zhí)行、到期情況、整個項目的進度等等,根據(jù)統(tǒng)計情況,做相應(yīng)通知處理;
這樣一個場景,如何編程實現(xiàn)?
用一般的編程方式,是無法實現(xiàn)自動觸發(fā)與統(tǒng)計的。當然,簡單的思路,是利于系統(tǒng)的cron job機制。但這種方式,對于配置及可靠性方面,需要比較多的人為操作因素。
Swoole是一個使用c開發(fā)的php擴展,通過php就可以實現(xiàn)高性能web服務(wù)器,同時,還內(nèi)置了定時器Timer、任務(wù)隊列Task特性。這樣,基于swoole,你可以在程序?qū)用婵刂茖崿F(xiàn)方式,減少對外部工具 - 獨立的消息隊列服務(wù)器、定時任務(wù)管理工具等的依賴性。
swoole的強大之處就在與其進程模型的設(shè)計,既解決了異步問題,又解決了并行。
用法如下:
swoole_server_addtimer($serv, 10);
第二個參數(shù)是定時器的間隔時間,單位為秒。swoole定時器的最小顆粒是1秒。支持多個定時器。注意不能存在2個相同間隔時間的定時器。 增加定時器后需要寫一個回調(diào)函數(shù)。
具體代碼如下:
swoole_server_handler($serv, 'onTimer', my_OnTimer); function my_OnTimer($serv, $interval) { echo "Timer[$interval] is call\n"; }
Task模塊,用來做一些異步的慢速任務(wù),比如webim中發(fā)廣播。類似node.js,假如有10萬個連接,要發(fā)廣播時,那會循環(huán)10萬次,這時候程序不能做任何事情,不能接受新的連接,也不能收包發(fā)包。
而swoole不同,丟給task進程之后,你的reactor,worker照跑不誤。任務(wù)完成后會異步地通知worker進程告訴它此任務(wù)已經(jīng)完成。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“swoole中可不可以設(shè)置多個定時器”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。