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