Ev EvIo 클래스

(PECL ev >= 0.2.0)


소개

EvIo 감시자는 파일 디스크립터(또는 소켓 또는 숫자 파일 디스크립터로 캐스팅 가능한 스트림)가 이벤트 루프의 각 반복에서 읽거나 쓸 수 있는지, 더 정확하게는 읽기가 프로세스를 차단하지 않고 쓰기가 최소한 일부 데이터를 쓸 수 있습니다. 조건이 지속되는 한 이벤트가 계속 수신되기 때문에 이 동작을 레벨 트리거라고 합니다. 이벤트 수신을 중지하려면 감시자를 중지하면 됩니다.

fd당 읽기 및/또는 쓰기 이벤트 감시자의 수는 무제한입니다. 모든 파일 설명자를 비차단 모드로 설정하는 것도 일반적으로 좋은 생각입니다(필수는 아님).

주의해야 할 또 다른 사항은 잘못된 준비 알림을 수신하기가 매우 쉽다는 것입니다. 즉, Ev::READ로 콜백을 호출할 수 있지만 데이터가 없기 때문에 후속 read()가 실제로 차단됩니다. 이 상황에 빠지는 것은 매우 쉽습니다. 따라서 항상 비차단 I/O를 사용하는 것이 가장 좋습니다. EAGAIN(또는 이와 유사한 것)을 반환하는 추가 read()는 일부 데이터가 도착할 때까지 프로그램이 중단되는 것보다 훨씬 더 좋습니다.

어떤 이유로 fd를 non-blocking 모드로 실행하는 것이 불가능한 경우 파일 디스크립터가 실제로 준비되었는지 별도로 다시 테스트하십시오. 어떤 사람들은 SIGALRM과 간격 타이머를 추가로 사용하여 무한히 차단되지 않도록 합니다.

항상 비차단 모드 사용을 고려하십시오.


클래스 개요

                  
class EvIo extends EvWatcher {

  /* Properties */
  public $fd;
  public $events;
  /* Inherited properties */
  public $is_active;
  public $data;
  public $is_pending;
  public $priority;

  /* Methods */
  public __construct(
       mixed $fd ,
       int $events ,
       callable $callback ,
       mixed $data = ?,
       int $priority = ?
  )
  final public static createStopped(
       mixed $fd ,
       int $events ,
       callable $callback ,
       mixed $data = null ,
       int $priority = 0
  ): EvIo
  public set( mixed $fd , int $events ): 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

fd
events

목차