Event EventBase 클래스

(PECL event >= 1.2.6-beta)


소개

EventBase 클래스는 libevent의 이벤트 기반 구조를 나타냅니다. 일련의 이벤트를 보유하고 어떤 이벤트가 활성인지 확인하기 위해 폴링할 수 있습니다.

각 이벤트 기반에는 준비된 이벤트를 결정하는 데 사용하는 메서드 또는 백엔드가 있습니다. 인식되는 메소드는 select, poll, epoll, kqueue, devpoll, evportwin32 입니다.

사용하도록 이벤트 기반을 구성하거나 특정 백엔드 EventConfig 클래스를 피할 수 있습니다.

경고 연결된 Event 개체의 리소스가 해제되지 않는 한 EventBase 개체를 파괴하지 마십시오. 그렇지 않으면 예측할 수 없는 결과를 초래할 것입니다!


클래스 개요

                  
final class EventBase {

  /* Constants */
  const int LOOP_ONCE = 1;
  const int LOOP_NONBLOCK = 2;
  const int NOLOCK = 1;
  const int STARTUP_IOCP = 4;
  const int NO_CACHE_TIME = 8;
  const int EPOLL_USE_CHANGELIST = 16;

  /* Methods */
  public __construct( EventConfig $cfg = ?)
  public dispatch(): void
  public exit( float $timeout = ?): bool
  public free(): void
  public getFeatures(): int
  public getMethod(): string
  public getTimeOfDayCached(): float
  public gotExit(): bool
  public gotStop(): bool
  public loop( int $flags = ?): bool
  public priorityInit( int $n_priorities ): bool
  public reInit(): bool
  public stop(): bool
}
                  
                

미리 정의된 상수

EventBase::LOOP_ONCE
EventBase::loop() 메서드와 함께 사용되는 플래그는 "libevent에 활성 이벤트가 있을 때까지 차단한 다음 모든 활성 이벤트에 콜백이 실행되면 종료"를 의미합니다.
EventBase::LOOP_NONBLOCK
EventBase::loop() 메서드와 함께 사용되는 플래그는 "차단하지 않음: 지금 준비된 이벤트를 확인하고 우선 순위가 가장 높은 이벤트의 콜백을 실행한 다음 종료"를 의미합니다.
EventBase::NOLOCK
구성 플래그입니다. 잠금이 설정되어 있어도 이벤트 기반에 잠금을 할당하지 마십시오.
EventBase::STARTUP_IOCP
Windows 전용 구성 플래그입니다. 시작 시 IOCP 디스패처를 활성화합니다.
EventBase::NO_CACHE_TIME
구성 플래그입니다. 이벤트 루프가 타임아웃 콜백을 실행할 준비가 될 때마다 현재 시간을 확인하는 대신 각 타임아웃 콜백 후에 확인합니다.
EventBase::EPOLL_USE_CHANGELIST
epoll 백엔드를 사용하는 경우 이 플래그는 Libevent의 내부 변경 목록 코드를 사용하여 가능한 한 적은 시스템 호출을 수행하기 위해 추가 및 삭제를 일괄 처리하는 것이 안전하다고 말합니다.

이 플래그를 설정하면 코드 실행 속도가 빨라지지만 Linux 버그가 발생할 수 있습니다. dup() 또는 그 변형에 의해 복제된 fds가 있는 경우 이 플래그를 사용하는 것은 안전하지 않습니다. 그렇게 하면 이상하고 진단하기 어려운 버그가 생성됩니다.

이 플래그는 EVENT_EPOLL_USE_CHANGELIST 환경 변수를 설정하여 활성화할 수도 있습니다.

epoll 이외의 백엔드를 사용하는 경우 이 플래그는 효과가 없습니다.


목차