(PECL ev >= 0.2.0)
EvPrepare 和 EvCheck 观察器通常成对使用。 EvPrepare 观察器在进程阻塞之前被调用,EvCheck 之后被调用。
不允许从 EvPrepare 或 EvCheck 观察器调用 EvLoop::run() 或类似方法或函数来进入当前事件循环。然而,其他循环除外。这背后的原理是,不需要在这些观察器中检查递归,即顺序将始终是:EvPrepare -> 阻塞 -> EvCheck,因此,拥有每种类型的观察器,它们将始终成对调用,将阻塞调用括起来。
主要目的是将其他事件机制集成到 libev 中,它们的用法有点高级。例如,它们可以用来跟踪变量的变化、实现自定义观察器、集成 net-snmp 或协程库等等。它们也偶尔用于缓存一些数据,并希望在阻塞之前将其刷新。
建议为 EvCheck 观察器设置最高 (Ev::MAXPRI
) 优先级,以确保它们在轮询之后但在任何其他观察器之前运行(这对 EvPrepare 观察器来说无关紧要)。
此外,EvCheck 观察器不应激活/馈送事件。虽然 libev 完全支持这一点,但它们可能会在其他 EvCheck 观察器完成工作之前被执行。
$callback
, mixed $data
= null
, int $priority
= 0 ): EvPrepare