资讯专栏INFORMATION COLUMN

PHP的Ev教程一(初识Ev和EvTimer简单入口)

instein / 2863人阅读

摘要:是一个事件循环一个寄存器对某些事件例如文件描述符是可读的或超时发生进行注册,它将管理这些事件源并为程序提供事件。为此,必须通过执行事件循环处理程序来或多或少地完成对进程或线程的控制,然后通过回调机制来传递事件。

简介
此扩展提供了Libev库——一个用C语言编写的高性能全功能事件循环。

Libev是一个事件循环:一个寄存器对某些事件(例如文件描述符是可读的或超时发生)进行注册,它将管理这些事件源并为程序提供事件。

为此,必须通过执行事件循环处理程序来或多或少地完成对进程(或线程)的控制,然后通过回调机制来传递事件。

你通过注册所谓的事件观察者来记录某些事件,然后通过启动观察者将其交给Libev。

Note: 此扩展在 Windows 平台上不可用。

安装php扩展ev 编译ev扩展
# via http://pecl.php.net/package/ev
# 选择自己对应的php版本下载,我下面演示的是php > = 5.4
wget https://pecl.php.net/get/ev-1.0.4.tgz
tar zxvf ev-1.0.4.tgz
cd ev-1.0.4
./configure
make && make install
简单测试
php -r "var_dump(class_exists("EvTimer"));";

# output: bool(true) 表示安装正常了
EvTimer的测试demo evtimer.php 代码
stop(); //之后的代码依旧会执行
    }

//    file_put_contents("./xx.log", $nowIter . microtime(true) .PHP_EOL, 8);
    echo "w1执行, 当前iter: " . $nowIter . PHP_EOL;
});

Ev::run();

echo "END". PHP_EOL; //只有事件轮询结束后才会执行最后续的代码
执行
php evtimer.php
执行结果
w1执行, 当前iter: 1
w1执行, 当前iter: 2
w1执行, 当前iter: 3
w1执行, 当前iter: 4
w1执行, 当前iter: 5
END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28887.html

相关文章

  • PHPEv教程二(watcherwatche回调等)

    摘要:例如,下面的代码等待成为可读的等待直到可读所有观察者构造函数会自动启动观察者。因此,应该保留由构造函数或工厂方法返回的观察者对象。观察者回调传递给观察者构造函数派生于的类等。 Watchers (观察者) 观察者是为了记录某件事而创造的对象。例如,下面的代码等待STDIN成为可读的: 所有观察者构造函数会自动启动观察者。createStopped方法创建停止监视器(例如 EvIo::...

    XboxYan 评论0 收藏0
  • PHPEv教程三(Periodic watcher)

    摘要:周期性观察者的运行模式根据偏移间隔和重新调度参数,不同周期的观察者工作绝对定时器。这并不意味着触发器之间总是有秒的时间,但只有当系统时间显示一个完整的小时时才会调用回调。它必须根据传递的时间值也就是说,大于或等于第二个参数的最低时间值。 Periodic watcher operation modes (周期性观察者的运行模式) 根据偏移、间隔和重新调度参数,不同周期的观察者工作 of...

    wapeyang 评论0 收藏0
  • 「HTML5」FileAPI 文件操作实战

    摘要:准备工作首先,我们的来自于标签中选中的文件列表。用户选中的文件信息也会传入回调函数的第一个参数中。唯一需要特殊处理的是文件对象的获取入口改变了。对于标签,监听事件,存放在中对于拖拽操作,存放在拖拽事件的回调函数参数里,通过访问即可。 本文来自《FileAPI 文件操作实战》其他所有系列都放在了Github。欢迎交流和Star。 介绍 HTML5 为我们提供了 File API 相关规...

    Jacendfeng 评论0 收藏0

发表评论

0条评论

instein

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<