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

2015-01-24信息快讯网

这篇文章主要介绍了PHP框架Swoole定时器Timer特性分析,在PHP项目开发中具有不错的实用价值,需要的朋友可以参考下

本文所述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的数据库连接池,异步队列等等,还需要进一步挖掘。

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

VPS中使用LNMP安装WordPress教程
php+jQuery.uploadify实现文件上传教程
php中heredoc与nowdoc介绍
php使用sql server验证连接数据库的方法
php使用pdo连接mssql server数据库实例
PHP+jquery+ajax实现即时聊天功能实例
在SAE上搭建最新wordpress的方法
php提示Failed to write session data错误的解决方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
php使用pdo连接报错Connection failed SQLSTATE的解决方法
jQuery Mobile + PHP实现文件上传
Yii入门教程之Yii安装及hello world
php异步多线程swoole用法实例
PHP字符串word末字符实现大小写互换的方法
PHP页面实现定时跳转的方法
PHP定时任务延缓执行的实现
PHP实现定时执行任务的方法
PHP中使用sleep函数实现定时任务实例分享
php版本的cron定时任务执行器使用实例
几道坑人的PHP面试题 试试看看你会不会也中招
php中使用array_filter()函数过滤空数组的实现代码
zend framework框架中url大小写问题解决方法
PHPer 需要了解的 5 个 Composer 小技巧
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
PHP管理依赖(dependency)关系工具 Composer 安装与使用
phpmyadmin出现Cannot start session without errors问题解决方法
Zend Framework 2.0事件管理器(The EventManager)入门教程
PHP中的reflection反射机制测试例子
PHP的反射类ReflectionClass、ReflectionMethod使用实例
实例介绍PHP的Reflection反射机制
PHP中file_exists函数不支持中文名的解决方法
php.ini save_handler 修改不生效的解决办法
linux下使用crontab实现定时PHP计划任务失败的原因分析
PHP+Memcache实现wordpress访问总数统计(非插件)
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Zend Framework页面缓存实例
PHP定时更新程序设计思路分享
php定时计划任务与fsockopen持续进程实例
linux使用crontab实现PHP执行计划定时任务
win7计划任务定时执行PHP脚本设置图解
©2014-2024 dbsqp.com