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

感兴趣的读者能够测试一下本文所述实例代码,并根据自身项目需求进一步挖掘其用法。异步

相关文章
相关标签/搜索