搜尋
首頁php框架Swooleswoole能設定多個定時器嗎

swoole能設定多個定時器嗎

Dec 16, 2019 pm 01:52 PM
swoole

swoole能設定多個定時器嗎

首先,在各種業務型系統中,往往需要伺服器在後台掃描相關數據,觸發對應的統計、通知等操作。

例如對於一個專案管理系統,需要每天的特定時間內,統計每項任務的執行、到期情況、整個專案的進度等等,根據統計情況,做相應通知處理; (推薦學習: swoole影片教學

這樣一個場景,如何程式實作?

用一般的程式設計方式,是無法實現自動觸發與統計的。當然,簡單的思路,是利於系統的cron job機制。但這種方式,對於配置及可靠性方面,需要比較多的人為操作因素。

Swoole是使用c開發的php擴展,透過php就可以實現高效能web伺服器,同時,也內建了定時器Timer、任務佇列Task特性。這樣,基於swoole,你可以在程式層面控制實作方式,減少對外部工具 - 獨立的訊息佇列伺服器、定時任務管理工具等的依賴性。

swoole的強大之處就在與其進程模型的設計,既解決了非同步問題,也解決了並行。

用法如下:

swoole_server_addtimer($serv, 10);

第二個參數是計時器的間隔時間,單位為秒。 swoole定時器的最小顆粒是1秒。支援多個定時器。注意不能存在2個相同間隔時間的定時器。增加定時器後需要寫一個回呼函數。

具體程式碼如下:

swoole_server_handler($serv, 'onTimer', my_OnTimer);
function my_OnTimer($serv, $interval)
{
  echo "Timer[$interval] is call\n";
}

Task模組,用來做一些非同步的慢速任務,例如webim中發廣播。類似node.js,假如有10萬個連接,要發廣播時,那會循環10萬次,這時候程式不能做任何事情,不能接受新的連接,也不能收包發包。

而swoole不同,丟給task進程之後,你的reactor,worker照跑不誤。任務完成後會非同步地通知worker進程告訴它此任務已經完成。

以上是swoole能設定多個定時器嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)