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
목차
- EvIo::__construct — EvIo 감시자 개체를 구성합니다.
- EvIo::createStopped — 중지된 EvIo 감시자 개체 만들기
- EvIo::set — watcher를 구성합니다.