Клас 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 - Виконує внутрішні перевірки узгодженості (для налагодження)