Клас EvLoop
(PECL ev >= 0.2.0)
Вступ
Представляє подійний цикл, який завжди відрізняється від циклу за замовчуваннямВ отличие отциклу за замовчуванням, він не може працювати зі спостерігачами EvChild
Якщо доступна робота з потоками виконання, необхідно створити цикл для кожного потоку використовуючи в якості батька цикл за замовчуванням
Типовий цикл за замовчуванням ініціалізується автоматично за допомогою EvОн доступен с помощью методов классаEvили с помощью методаEvLoop::defaultLoop()
Огляд класів
final
class EvLoop
{
/* Свойства */
public
$data;
public
$backend;
public
$is_default_loop;
public
$iteration;
public
$pending;
public
$io_interval;
public
$timeout_interval;
public
$depth;
/* Методы */
public
__construct(
int
$flags
= ?,
mixed
$data
= NULL
,
float
$io_interval
= 0.0
,
float
$timeout_interval
= 0.0
)
public
backend(): int
final
public
check(
string
$callback
,
string
$data
= ?,
string
$priority
= ?): EvCheck
final
public
child(
string
$pid
,
string
$trace
,
string
$callback
,
string
$data
= ?,
string
$priority
= ?): EvChild
public
static
defaultLoop(
int
$flags
= Ev::FLAG_AUTO
,
mixed
$data
= NULL
,
float
$io_interval
= 0.
,
float
$timeout_interval
= 0.
): EvLoop
final
public
embed(
string
$other
,
string
$callback
= ?,
string
$data
= ?,
string
$priority
= ?): EvEmbed
final
public
fork(
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvFork
final
public
idle(
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvIdle
public
invokePending(): void
final
public
io(
mixed
$fd
,
int
$events
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvIo
public
loopFork(): void
public
now(): float
public
nowUpdate(): void
final
public
periodic(
float
$offset
,
float
$interval
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvPeriodic
final
public
prepare(
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvPrepare
public
resume(): void
public
run(
int
$flags
= 0
): void
final
public
signal(
int
$signum
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvSignal
final
public
stat(
string
$path
,
float
$interval
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvStat
public
stop(
int
$how
= ?): void
public
suspend(): void
final
public
timer(
float
$after
,
float
$repeat
,
callable
$callback
,
mixed
$data
= null
,
int
$priority
= 0
): EvTimer
public
verify(): void
}
Властивості
data
Довільні дані, додані циклу
backend
Тільки читання. . Прапори бекенда що вказують який подійний бекенд використовується.
is_default_loop
Тільки читання. Якщо true
, Це цикл за замовчуванням.
iteration
Поточний лічильник ітерацій. Дивись Ev::iteration()
pending
Кількість спостерігачів, що очікують . означає, що спостерігачі, що очікують, відсутні.
io_interval
Вищі значення io_interval позволяютlibev витрачати більше часу для збору подій EvIo, що дозволить обробити більше подій за одну ітерацію, заплативши за це збільшеними затримками. Час очікування (і EvPeriodic і EvTimer) не буде порушено. Налаштування в ненульове значення додати додатковий виклик sleep()
більшість ітерацій циклу. Час сну гарантує, що libev не передаватиме події EvIo частіше, ніж один раз за цей період, у середньому. Для більшості програм хорошим значенням io_interval буде значення близько 0.1
, цього достатньо більшості інтерактивних серверів (не для ігор). Зазвичай ви не помітите жодної різниці, якщо встановите його менше 0.01
, так як це значення буде близько до мінімального інтервалу обчислюваного часу для більшості систем.
Также читайте» ФУНКЦІЇ УПРАВЛІННЯ ПОДІЙНИМИ ЦИКЛАМИ
timeout_interval
Вищі значення timeout_interval позволятlibev витрачати більше часу для збору перевищеного часу очікування рахунок збільшення затримок/джиттеров/неточностей (функція зворотного виклику спостерігача буде викликана пізніше). Спостерігачі EvIo не торкнуться. Збільшення цього значення не викличе перевитрати ресурсів у libevТакже читайте» ФУНКЦІЇ УПРАВЛІННЯ ПОДІЙНИМИ ЦИКЛАМИ
depth
Глубина рекурсии. СмотритеEv::depth()
Зміст
- EvLoop::backend— Повертає ціле число, що описує бекенд, який використовується libev
- EvLoop::check— Створює об'єкт EvCheck, пов'язаний із поточним екземпляром циклу подій
- EvLoop::child— Створює об'єкт EvChild, пов'язаний із поточним циклом подій
- EvLoop::__construct - Конструктор об'єкта циклу подій
- EvLoop::defaultLoop— Повертає або створює цикл стандартних подій
- EvLoop::embed— Створює екземпляр спостерігача EvEmbed, пов'язаний із поточним об'єктом EvLoop
- EvLoop::fork— Створює об'єкт спостерігача EvFork, пов'язаний із поточним екземпляром циклу подій
- EvLoop::idle— Створює об'єкт спостерігача EvIdle, пов'язаний із поточним екземпляром циклу подій
- EvLoop::invokePending— Викликає всіх спостерігачів, що очікують, при скиданні їх відкладеного стану
- EvLoop::io— Створює об'єкт спостерігача EvIo, пов'язаний із поточним екземпляром циклу подій
- EvLoop::loopFork— Викликається після розгалуження
- EvLoop::now - Повертає поточне "event loop time"
- EvLoop::nowUpdate— Встановлює поточний час, запитуючи ядро, оновлюючи час, який повертається EvLoop::now у процесі
- EvLoop::periodic— Створює об'єкт спостерігача EvPeriodic, пов'язаний із поточним екземпляром циклу подій
- EvLoop::prepare— Створює об'єкт спостерігача EvPrepare, пов'язаний із поточним екземпляром циклу подій
- EvLoop::resume— Відновлює раніше зупинений цикл подій
- EvLoop::run— Перевіряє події та викликає callback-функції у циклі
- EvLoop::signal— Створює об'єкт спостерігача EvSignal, пов'язаний із поточним екземпляром циклу подій
- EvLoop::stat— Створює об'єкт спостерігача EvStat, пов'язаний із поточним екземпляром циклу подій
- EvLoop::stop - Зупиняє цикл подій
- EvLoop::suspend - Припиняє цикл
- EvLoop::timer— Створює об'єкт спостерігача EvTimer, пов'язаний із поточним екземпляром циклу подій
- EvLoop::verify - Виконує внутрішні перевірки узгодженості (для налагодження)