2024 年 PHP 日本大会

EvCheck 类

(PECL ev >= 0.2.0)

简介

EvPrepareEvCheck 观察器通常成对使用。EvPrepare 观察器在进程阻塞之前被调用,EvCheck 之后被调用。

不允许从 EvPrepareEvCheck 观察器调用 EvLoop::run() 或类似方法或函数来进入当前事件循环。但是,其他循环除外。其背后的原因是,不需要检查这些观察器中的递归,即顺序将始终为:EvPrepare -> 阻塞 -> EvCheck,因此如果每种类型的观察器都存在,它们将始终成对调用,从而包围阻塞调用。

其主要目的是将其他事件机制集成到 libev 中,其用法有些高级。例如,它们可用于跟踪变量更改、实现自定义观察器、集成 net-snmp 或协程库以及更多其他功能。它们有时也用于缓存一些数据,并在阻塞之前刷新数据。

建议为 EvCheck 观察器赋予最高 (Ev::MAXPRI) 优先级,以确保它们在轮询后在任何其他观察器之前运行(这对 EvPrepare 观察器无关紧要)。

此外,EvCheck 观察器不应激活/馈送事件。虽然 libev 完全支持这一点,但它们可能会在其他 EvCheck 观察器完成其工作之前执行。

类概要

class EvCheck extends EvWatcher {
/* 继承属性 */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* 方法 */
public __construct( callable $callback , mixed $data = ?, int $priority = ?)
final public static createStopped( string $callback , string $data = ?, string $priority = ?): object
/* 继承方法 */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

目录

添加笔记

用户贡献笔记

此页面没有用户贡献的笔记。
To Top