Swoole事件处理系统

PHP的Web程序中经常需要执行一些非查询的任务处理,传统程序一般采用直接调用函数去完成。Swoole框架提供了一整套基于事件的异步处理系统,能够实现耗时任务异步非阻塞执行。对于有大量动态数据处理,访问量很大的站点能非常有效的解决程序效率问题。

传统程序的执行方式: 请求到URL -> PHP程序执行 -> 调用相关函数或代码同步阻塞执行 -> 完成后显示页面

这样的程序有2个缺点,1,用户请求之后程序必须运行完所有代码才会显示页面,2、如果访问量较大程序会阻塞,并且并发高,系统效率会降低。

Swoole事件处理模型: 请求到URL -> PHP程序执行 -> 触发一个特定事件 -> 完成后显示页面

程序执行时,遇到耗时的非查询显示类任务不执行,而是引发一个事件,插入到高速队列中,立即响应浏览器,并显示页面。在后端服务器上运行多个Swoole的事件处理worker进程,从高速队列中取回事件,进行处理。实现了异步非阻塞的IO处理,效率会非常高。

使用方法:

在config.php文件中配置事件处理

1. define('EVENT_MODE','async');
2. define('EVENT_HANDLE',WEBPATH.'/apps/configs/events.php');
3. //建议使用HttpQueue程序
4. define('EVENT_QUEUE','file://localhost#queue');
5. define('EVENT_QUEUE_TYPE','CacheQueue');

测试生成事件:

01. <?php
02. require 'config.php';
03. $php->autoload('event');
04.  
05. for($i=0;$i<10;$i++)
06. {
07. echo $i;
08. $php->event->raise('test',$i,'say');
09. }

 

在服务器运行,work进程

01. <?php
02. require 'config.php';
03.  
04. function test($id,$op)
05. {
06. echo $id,':',$op,NL;
07. }
08. $php->autoload('event');
09. $php->event->run_server(1000,WEBPATH.'/cache/event.log');

 

编写事件对应表,事件类型=>函数名称

1. <?php
2. $handle = array('test'=>'test');
3. ?>

转载于:https://www.cnblogs.com/youlechang123/archive/2013/05/22/3092939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值