Swoole定時器Timer特性分析與使用

Swoole是一個使用c開發的php擴展,經過php就能夠實現高性能web服務器,同時,還內置了定時器Timer、任務隊列Task特性。這樣,基於swoole,你能夠在程序層面控制實現方式,減小對外部工具 - 獨立的消息隊列服務器、定時任務管理工具等的依賴性。php

swoole的強大之處就在與其進程模型的設計,既解決了異步問題,又解決了並行。用法以下:node

swoole_server_addtimer($serv, 10);

 

第二個參數是定時器的間隔時間,單位爲秒。swoole定時器的最小顆粒是1秒。支持多個定時器。注意不能存在2個相同間隔時間的定時器。 增長定時器後須要寫一個回調函數。react

具體代碼以下:web

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進程告訴它此任務已經完成。服務器

固然task模塊的做用還不只如此,實現PHP的數據庫鏈接池,異步隊列等等,還須要進一步挖掘。swoole

感興趣的讀者能夠測試一下本文所述實例代碼,並根據自身項目需求進一步挖掘其用法。異步

相關文章
相關標籤/搜索