首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EvPeriodic (class)

Introduction

(PECL ev >= 0.2.0)

Periodic watchers are also timers of a kind, but they are very versatile.

Unlike EvTimer , EvPeriodic watchers are not based on real time(or relative time, the physical time that passes) but on wall clock time(absolute time, calendar or clock). The difference is that wall clock time can run faster or slower than real time, and time jumps are not uncommon(e.g. when adjusting it).

EvPeriodic watcher can be configured to trigger after some specific point in time. For example, if an EvPeriodic watcher is configured to trigger "in 10 seconds" (e.g. EvLoop::now() + 10.0 , i.e. an absolute time, not a delay), and the system clock is reset to January of the previous year , then it will take a year or more to trigger the event (unlike an EvTimer , which would still trigger roughly 10 seconds after starting it as it uses a relative timeout).

As with timers, the callback is guaranteed to be invoked only when the point in time where it is supposed to trigger has passed. If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones with later time-out values (but this is no longer true when a callback calls EvLoop::run() recursively).

Class synopsis

EvPeriodic extends EvWatcher {

/* Properties */

public $offset ;

public $interval ;

/* Inherited properties */

public $is_active ;

public $data ;

public $is_pending ;

public $priority ;

/* Methods */

代码语言:javascript
复制
public void again ( void )
代码语言:javascript
复制
public double at ( void )
代码语言:javascript
复制
public __construct (  double $offset  ,  string $interval  ,  callable $reschedule_cb  ,  callable $callback  [,  mixed $data  = NULL  [,  int $priority  = 0  ]] )
代码语言:javascript
复制
final public static EvPeriodic createStopped (  double $offset  ,  double $interval  ,  callable $reschedule_cb  ,  callable $callback  [,  mixed $data  = NULL  [,  int $priority  = 0  ]] )
代码语言:javascript
复制
public void set (  double $offset  ,  double $interval  )

/* Inherited methods */

代码语言:javascript
复制
public int EvWatcher::clear ( void )
代码语言:javascript
复制
abstract public EvWatcher::__construct ( void )
代码语言:javascript
复制
public void EvWatcher::feed (  int $revents  )
代码语言:javascript
复制
public EvLoop EvWatcher::getLoop ( void )
代码语言:javascript
复制
public void EvWatcher::invoke (  int $revents  )
代码语言:javascript
复制
public bool EvWatcher::keepalive ([  bool $value  ] )
代码语言:javascript
复制
public void EvWatcher::setCallback (  callable $callback  )
代码语言:javascript
复制
public void EvWatcher::start ( void )
代码语言:javascript
复制
public void EvWatcher::stop ( void )

}

Properties

offset

When repeating, this contains the offset value, otherwise this is the absolute point in time(the offset value passed to EvPeriodic::set() , although libev might modify this value for better numerical stability).

interval

The current interval value. Can be modified any time, but changes only take effect when the periodic timer fires or EvPeriodic::again() is being called.

Table of Contents

  • EvPeriodic::again — Simply stops and restarts the periodic watcher again.
  • EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next
  • EvPeriodic::__construct — Constructs EvPeriodic watcher object
  • EvPeriodic::createStopped — Create a stopped EvPeriodic watcher
  • EvPeriodic::set — Configures the watcher

← EvLoop::verify

EvPeriodic::again →

代码语言:txt
复制
 © 1997–2017 The PHP Documentation Group

Licensed under the Creative Commons Attribution License v3.0 or later.

扫码关注腾讯云开发者

领取腾讯云代金券