• 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.?>
  • 相关阅读:
    KVC(key value coding)/ KVO(key value observing)
    手势识别
    导航控制器掌握内容:
    火车入轨_算法
    卡片游戏_算法
    Python合集之Python循环语句(一)
    Python合集之Python选择语句(四)
    Python合集之Python选择语句(三)
    Python合集之Python选择语句(二)
    Python合集之Python选择语句(一)
  • 原文地址:https://www.cnblogs.com/youlechang123/p/3092939.html
Copyright © 2020-2023  润新知