php中libevent的用法是哪些?
发布时间:2022-04-07 16:06:08 所属栏目:语言 来源:互联网
导读:很多新手在学习PHP时,对于 libevent 功能和用法不是很清楚,下面小编给大家介绍一下php中libevent的用法和libevent安装,文本示例有一定的参考价值,有这方面学习需求的朋友可以看看。 值 常量名 含义 1 EV_TIMEOUT 超过时间后事件成为激活状态 2 EV_READ F
很多新手在学习PHP时,对于 libevent 功能和用法不是很清楚,下面小编给大家介绍一下php中libevent的用法和libevent安装,文本示例有一定的参考价值,有这方面学习需求的朋友可以看看。 值 常量名 含义 1 EV_TIMEOUT 超过时间后事件成为激活状态 2 EV_READ FD就绪,可以读取的时候 ,事件成为激活状态 4 EV_WRITE FD就绪,可以写入的时候 ,事件成为激活状态 8 EV_SIGNAL 用于实现信号检测 16 EV_PERSIST 表示事件是持久的 32 EV_ET 表示底层是否支持边沿触发事件 1 EVLOOP_ONCE 如果设置了EVLOOP_ONCE,循环将等待某些事件成为激活的,执行激活的事件直到没有更多的事件可以执行,然会返回。 2 EVLOOP_NONBLOCK 如果设置了EVLOOP_NONBLOCK,循环不会等待事件被触发:循环将仅仅检测是否有事件已经就绪,可以立即触发,如果有,则执行事件的回调。 函数如下: event_base_free() 释放资源,这不能销毁绑定事件 event_base_loop() 处理事件,根据指定的base来处理事件循环 event_base_loopbreak() 立即取消事件循环,行为各break语句相同 event_base_loopexit() 在指定的时间后退出循环 event_base_new() 创建并且初始事件 event_base_priority_init() 设定事件的优先级 event_base_set() 关联事件到事件base event_buffer_base_set() 关联缓存的事件到event_base 例1如下: <?php //创建和初始化新的事件库 $base = event_base_new(); //创建并返回一个新的事件资源 $event = event_new(); //准备一个事件 event_set($event, 0, EV_TIMEOUT, function() { echo "run..."; }); //关联事件到事件库 event_base_set($event, $base); //添加事件 event_add($event, 5000000); //根据指定的事件库来处理事件循环 event_base_loop($base); 上述代码在等待了5秒后打印出run...后程序结束。 我们把上述代码修改一下: <?php //创建和初始化新的事件库 $base = event_base_new(); //创建并返回一个新的事件资源 $event = event_new(); //准备一个事件 event_set($event, 0, EV_TIMEOUT | EV_PERSIST, function() { echo "run...rn"; }); //关联事件到事件库 event_base_set($event, $base); //添加事件 event_add($event, 1000000); //根据指定的事件库来处理事件循环 event_base_loop($base); 上述代码会每隔1秒钟打印出run...,只是因为我们在event_set时使用了EV_PERSIST,表示该事件是一个持久的。 例2如下: <?php function printContent($fd, $events, $args) { $data = trim(fgets($fd)); echo "input: ", $data, "rn"; (编辑:常州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |