Клас EvStat

(PECL ev >= 0.2.0)

Вступ

EvStat спостерігає за зміною атрибутів об'єкта заданим шляхом у файловій системі. Це досягається шляхом регулярного запуску stat() для цього шляху (або шляхом отримання сигналу про зміну від операційної системи) та порівняння отриманих даних з результатами попереднього виклику. У разі виявлення зміни атрибутів викликається callback-функція.

Шлях не обов'язково має існувати насправді. Зміна статусу з "шлях існує" на "шлях не існує" - це така ж зміна, як і будь-яке інше. Стан "шлях не існує" визначається за значенням 'nlink' рівним 0 (яке повертається методом EvStat::attr()

Шлях не повинен закінчуватися слішем або містити спеціальні компоненти, такі як **'.'**или .. . . Шлях має бути абсолютним. Якщо задати відносний шлях і змінити робочий каталог, поведінка буде невизначеною.

Так як немає інтерфейсу сповіщення про зміни, що переноситься, переносна реалізація просто викликає stat() через рівні проміжки часу і дивиться, чи не змінилося чогось. Тому рекомендується ставити інтервал опитування. Якщо інтервал опитування заданий рівним 0.0 (що вкрай рекомендується), то використовуватиметься значення за умовчанням (якого ніхто не знає, але передбачається, що десь близько 5 секунд, але при цьому може динамічно змінюватися) . libev має обмеження на мінімальне значення інтервалу, яке зараз дорівнює приблизно **0.1**Але такий інтервал - це стрілянина з гармати по горобцях.

Не рекомендується використовувати велику кількість одночасно працюючих спостерігачів EvStatоскільки це може сильно вплинути на споживання ресурсів у зв'язку з використанням механізмів оповіщення операційної системи.

Огляд класів


     
    
    
    
     
      class EvStat
     
     
      extends
       EvWatcher
     
     {
    
    /* Свойства */
    
     public
      $path;

    public
      $interval;

    /* Наследуемые свойства */
    public
      $is_active;
public
      $data;
public
      $is_pending;
public
      $priority;

    /* Методы */
    
   public
   __construct(    
    string
     $path
   ,    
    float
     $interval
   ,    
    callable
     $callback
   ,    
    mixed
     $data
     = null
   ,    
    int
     $priority
     = 0
   )

    public
   attr(): array
final
   public
   static
   createStopped(    
    string
     $path
   ,    
    float
     $interval
   ,    
    callable
     $callback
   ,    
    mixed
     $data
     = null
   ,    
    int
     $priority
     = 0
   ): void
public
   prev(): void
public
   set(
    string
     $path
   , 
    float
     $interval
   ): void
public
   stat(): bool

    /* Наследуемые методы */
    public
   EvWatcher::clear(): int
public
   EvWatcher::feed(
    int
     $revents
   ): void
public
   EvWatcher::getLoop(): EvLoop
public
   EvWatcher::invoke(
    int
     $revents
   ): void
public
   EvWatcher::keepalive(
    bool
     $value
    = ?): bool
public
   EvWatcher::setCallback(
    callable
     $callback
   ): void
public
   EvWatcher::start(): void
public
   EvWatcher::stop(): void

   }

Властивості

interval

Тільки читання. Показує, наскільки часто відбуваються опитування статусу і зазвичай 0.0, що дозволяє libev самостійно визначати інтервал.

path

Тільки читання. Шлях, для якого відстежуються зміни.

Зміст

  • EvStat::attr— Повертає значення, нещодавно виявлені Ev
  • EvStat::__construct - Створює об'єкт спостерігача EvStat
  • EvStat::createStopped - Створює зупинений об'єкт спостерігача EvStat
  • EvStat::prev— Повертає попередній набір значень, які повертаються EvStat::attr
  • EvStat::set— Налаштовує спостерігача
  • EvStat::stat - Ініціює виклик статистики