<?php
// 纯PHP实现,使用pcntl,性能一般
/*
// 给当前php进程安装一个alarm信号处理器
// 当进程收到alarm时钟信号后会作出动作
pcntl_signal( SIGALRM, function(){
echo "tick.".PHP_EOL;
} );
// 定义一个时钟间隔时间,1秒钟吧
$tick = 1;
while( true ){
// 当过了tick时间后,向进程发送一个alarm信号
pcntl_alarm( $tick );
// 分发信号,呼唤起安装好的各种信号处理器
pcntl_signal_dispatch();
// 睡个1秒钟,继续
sleep( $tick );
}
*/
// 初始化一个EventConfig
$eventConfig = new EventConfig();
// 根据EventConfig初始化一个EventBase
$eventBase = new EventBase($eventConfig);
// 初始化一个定时器event
$timer = new Event($eventBase, -1, Event::TIMEOUT | Event::PERSIST, function () {
echo microtime(true) . ':起飞!' . PHP_EOL;
});
// tick间隔为0.05秒钟,我们还可以改成0.5秒钟甚至0.001秒,也就是毫秒级定时器
$tick = 0.05;
// 将定时器event添加(可以不传$tick)
$timer->add($tick);
// eventBase进入loop状态
$eventBase->loop();
用 Event 扩展来实现一个 epoll 循环程序(定时器)
评论 (暂无评论)