PHP框架Swoole定时器Timer特性分析


Posted in PHP onAugust 19, 2014

本文所述PHP框架Swoole定时器Timer特性分析具有很好的实用价值,值得PHP程序开发人员学习借鉴。具体分析如下:

首先,在各种业务型系统中,往往需要服务器在后台扫描相关数据,触发相应的统计、通知等操作。

比如对于一个项目管理系统,需要每天的特定时间内,统计每项任务的执行、到期情况、整个项目的进度等等,根据统计情况,做相应通知处理;

这样一个场景,如何编程实现?

用一般的编程方式,是无法实现自动触发与统计的。当然,简单的思路,是利于系统的cron job机制。但这种方式,对于配置及可靠性方面,需要比较多的人为操作因素。

Swoole是一个使用c开发的php扩展,通过php就可以实现高性能web服务器,同时,还内置了定时器Timer、任务队列Task特性。这样,基于swoole,你可以在程序层面控制实现方式,减少对外部工具 - 独立的消息队列服务器、定时任务管理工具等的依赖性。

PHP框架Swoole定时器Timer特性分析

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进程告诉它此任务已经完成。

当然task模块的作用还不仅如此,实现PHP的数据库连接池,异步队列等等,还需要进一步挖掘。

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

PHP 相关文章推荐
相对路径转化成绝对路径
Apr 10 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
Dec 24 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
总结一些PHP中好用但又容易忽略的小知识
Jun 02 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 #PHP
PHP针对常规模板引擎中与CSS/JSON冲突的解决方法
Aug 19 #PHP
php解析json数据实例
Aug 19 #PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 #PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 #PHP
php中用memcached实现页面防刷新功能
Aug 19 #PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 #PHP
You might like
解析CodeIgniter自定义配置文件
2013/06/18 PHP
教你如何使用php session
2013/10/28 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
让插入到 innerHTML 中的 script 跑起来的实现代码
2006/07/01 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
详解在Python中处理异常的教程
2015/05/24 Python
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
python3 实现调用串口功能
2019/12/26 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
战友聚会邀请函
2014/01/18 职场文书
投标担保书范文
2014/04/02 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
普通党员整改措施
2014/10/24 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
初中中等生评语
2014/12/29 职场文书