Ev EvPeriodic 클래스

(PECL ev >= 0.2.0)


소개

정기 감시자도 일종의 타이머이지만 매우 다재다능합니다.

EvTimer 와 달리 EvPeriodic watcher는 실시간(또는 상대 시간, 경과하는 물리적 시간)을 기반으로 하지 않고 벽시계 시간(절대 시간, 달력 또는 시계)을 기반으로 합니다. 차이점은 벽시계 시간이 실시간보다 빠르거나 느리게 실행될 수 있으며 시간 점프가 일반적이지 않다는 것입니다(예: 조정할 때).

EvPeriodic 감시자는 특정 시점 이후에 트리거되도록 구성할 수 있습니다. 예를 들어, EvPeriodic 감시자가 "10초 이내"를 트리거하도록 구성되어 있고(예: EvLoop::now() + 10.0, 즉 지연이 아닌 절대 시간) 시스템 시계가 전년도 1월로 재설정된 경우, 그런 다음 이벤트를 트리거하는 데 1년 이상이 소요됩니다(상대 시간 초과를 사용하므로 시작 후 약 10초 동안 계속 트리거되는 EvTimer 과 달리).

타이머와 마찬가지로 콜백은 트리거되어야 하는 시점이 경과한 경우에만 호출되도록 보장됩니다. 동일한 루프 반복 중에 여러 타이머가 준비되면 더 이른 시간 제한 값을 가진 타이머가 나중에 시간 제한 값이 있는 타이머보다 먼저 호출됩니다(그러나 콜백이 EvLoop::run()을 재귀적으로 호출할 때는 더 이상 사실이 아닙니다).


클래스 개요

                  
class EvPeriodic extends EvWatcher {

  /* Properties */
  public $offset;
  public $interval;
  /* Inherited properties */
  public $is_active;
  public $data;
  public $is_pending;
  public $priority;

  /* Methods */
  public __construct(
       float $offset ,
       string $interval ,
       callable $reschedule_cb ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  )
  public again(): void
  public at(): float
  final public static createStopped(
       float $offset ,
       float $interval ,
       callable $reschedule_cb ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvPeriodic
  public set( float $offset , float $interval ): void

  /* Inherited methods */
  public EvWatcher::clear(): int
  public EvWatcher::feed( int $revents ): void
  public EvWatcher::getLoop(): EvLoop
  public EvWatcher::invoke( int $revents ): void
  public EvWatcher::keepalive( bool $value = ?): bool
  public EvWatcher::setCallback( callable $callback ): void
  public EvWatcher::start(): void
  public EvWatcher::stop(): void
}
                  
                

Properties

offset
반복할 때 이것은 오프셋 값을 포함합니다. 그렇지 않으면 이것은 절대 시점입니다( libev가 더 나은 수치적 안정성을 위해 이 값을 수정할 수 있지만 EvPeriodic::set() 에 전달된 오프셋 값).
interval
현재 간격 값입니다. 언제든지 수정할 수 있지만 변경 사항은 주기적 타이머가 실행되거나 EvPeriodic::again()이 호출될 때만 적용됩니다.

목차