PHP框架Swoole定时器Timer特性分析
本文所述PHP框架Swoole定时器Timer特性分析具有很好的实用价值,值得PHP程序开发人员学习借鉴。具体分析如下:
首先,在各种业务型系统中,往往需要服务器在后台扫描相关数据,触发相应的统计、通知等操作。
比如对于一个项目管理系统,需要每天的特定时间内,统计每项任务的执行、到期情况、整个项目的进度等等,根据统计情况,做相应通知处理;
这样一个场景,如何编程实现?
用一般的编程方式,是无法实现自动触发与统计的。当然,简单的思路,是利于系统的cronjob机制。但这种方式,对于配置及可靠性方面,需要比较多的人为操作因素。
Swoole是一个使用c开发的php扩展,通过php就可以实现高性能web服务器,同时,还内置了定时器Timer、任务队列Task特性。这样,基于swoole,你可以在程序层面控制实现方式,减少对外部工具-独立的消息队列服务器、定时任务管理工具等的依赖性。
swoole的强大之处就在与其进程模型的设计,既解决了异步问题,又解决了并行。用法如下:
swoole_server_addtimer($serv,10);
第二个参数是定时器的间隔时间,单位为秒。swoole定时器的最小颗粒是1秒。支持多个定时器。注意不能存在2个相同间隔时间的定时器。增加定时器后需要写一个回调函数。
具体代码如下:
swoole_server_handler($serv,"onTimer",my_OnTimer); functionmy_OnTimer($serv,$interval) { echo"Timer[$interval]iscall\n"; }
Task模块,用来做一些异步的慢速任务,比如webim中发广播。类似node.js,假如有10万个连接,要发广播时,那会循环10万次,这时候程序不能做任何事情,不能接受新的连接,也不能收包发包。
而swoole不同,丢给task进程之后,你的reactor,worker照跑不误。任务完成后会异步地通知worker进程告诉它此任务已经完成。
当然task模块的作用还不仅如此,实现PHP的数据库连接池,异步队列等等,还需要进一步挖掘。
感兴趣的读者可以测试一下本文所述实例代码,并根据自身项目需求进一步挖掘其用法。
相关文章
- php autoconf 配置,automake,autoconf使用详解
- JetBrains 等多家公司宣布成立 PHP 基金会
- WordPress教程:禁用PHP版本过低警告
- PHP rsort():数组排序(降序)
- 基于PHP的MySQL访问方式(php访问mysql)
- 分钟结合简单快捷:PHP跟MySQL搭配,5分钟搞定!(php与mysql5)
- PHP在Linux上的安装(php安装linux)
- 监控Redis运行状态:妙用PHP(php监听redis)
- PHP与MySQL的完美搭配,打造高效列表展示(php与mysql列表)
- 重启Linux服务器,以使PHP生效(php重启linux)
- PHP与MSSQL结合支持生僻字编辑(php mssql生僻字)
- PHP MSSQL框架:为企业开发更好的应用程序(php mssql 框架)
- 深入Linux:高效部署PHP项目(linux部署php项目)
- 为PHP引入Redis提高数据处理效率(为什么php用redis)
- IIS6的PHP最佳配置方法
- 详解PHP显示MySQL数据的三种方法
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- php引用返回与取消引用的详解
- PHP清空varnish缓存的详解(包括指定站点下的)
- PHP获取MSN好友列表类的实现代码
- PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
- PHP下获取上个月、下个月、本月的日期(strtotime,date)
- CI框架Session.php源码分析
- php递归法读取目录及文件的方法