<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.ev.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'class.ev.php',
    1 => 'Ev',
    2 => 'Класс Ev',
  ),
  'up' => 
  array (
    0 => 'book.ev.php',
    1 => 'Ev',
  ),
  'prev' => 
  array (
    0 => 'ev.periodic-modes.php',
    1 => 'Режимы работы периодических наблюдателей',
  ),
  'next' => 
  array (
    0 => 'ev.backend.php',
    1 => 'Ev::backend',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/ev/ev.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/class.ev.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="class.ev" class="reference">
 <h1 class="title">Класс Ev</h1>
 
 <div class="partintro"><p class="verinfo">(PECL ev &gt;= 0.2.0)</p>
  
  <div class="section" id="ev.intro">
   <h2 class="title">Введение</h2>
   <p class="simpara">
    Класс EV — статический класс, который обеспечивает доступ к циклу
    по умолчанию и некоторым общим операциям.
   </p>
  </div>
  
  <div class="section" id="ev.synopsis">
   <h2 class="title">Обзор класса</h2>

   
   <div class="classsynopsis">
    <span class="ooclass">
     <strong class="classname"></strong>
    </span>
    
    <div class="classsynopsisinfo">
     <span class="ooclass">
      <span class="modifier">final</span>
      <span class="modifier">class</span> <strong class="classname">Ev</strong>
     </span>
     {</div>
    
    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Константы */</div>
    
    <div class="fieldsynopsis">
     <span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-auto"><var class="varname">FLAG_AUTO</var></a></var><span class="initializer"> = 0</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-noenv"><var class="varname">FLAG_NOENV</var></a></var><span class="initializer"> = 16777216</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-forkcheck"><var class="varname">FLAG_FORKCHECK</var></a></var><span class="initializer"> = 33554432</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-noinotify"><var class="varname">FLAG_NOINOTIFY</var></a></var><span class="initializer"> = 1048576</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-signalfd"><var class="varname">FLAG_SIGNALFD</var></a></var><span class="initializer"> = 2097152</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.flag-nosigmask"><var class="varname">FLAG_NOSIGMASK</var></a></var><span class="initializer"> = 4194304</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.run-nowait"><var class="varname">RUN_NOWAIT</var></a></var><span class="initializer"> = 1</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.run-once"><var class="varname">RUN_ONCE</var></a></var><span class="initializer"> = 2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.break-cancel"><var class="varname">BREAK_CANCEL</var></a></var><span class="initializer"> = 0</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.break-one"><var class="varname">BREAK_ONE</var></a></var><span class="initializer"> = 1</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.break-all"><var class="varname">BREAK_ALL</var></a></var><span class="initializer"> = 2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.minpri"><var class="varname">MINPRI</var></a></var><span class="initializer"> = -2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.maxpri"><var class="varname">MAXPRI</var></a></var><span class="initializer"> = 2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.read"><var class="varname">READ</var></a></var><span class="initializer"> = 1</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.write"><var class="varname">WRITE</var></a></var><span class="initializer"> = 2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.timer"><var class="varname">TIMER</var></a></var><span class="initializer"> = 256</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.periodic"><var class="varname">PERIODIC</var></a></var><span class="initializer"> = 512</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.signal"><var class="varname">SIGNAL</var></a></var><span class="initializer"> = 1024</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.child"><var class="varname">CHILD</var></a></var><span class="initializer"> = 2048</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.stat"><var class="varname">STAT</var></a></var><span class="initializer"> = 4096</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.idle"><var class="varname">IDLE</var></a></var><span class="initializer"> = 8192</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.prepare"><var class="varname">PREPARE</var></a></var><span class="initializer"> = 16384</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.check"><var class="varname">CHECK</var></a></var><span class="initializer"> = 32768</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.embed"><var class="varname">EMBED</var></a></var><span class="initializer"> = 65536</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.custom"><var class="varname">CUSTOM</var></a></var><span class="initializer"> = 16777216</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.error"><var class="varname">ERROR</var></a></var><span class="initializer"> = 2147483648</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-select"><var class="varname">BACKEND_SELECT</var></a></var><span class="initializer"> = 1</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-poll"><var class="varname">BACKEND_POLL</var></a></var><span class="initializer"> = 2</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-epoll"><var class="varname">BACKEND_EPOLL</var></a></var><span class="initializer"> = 4</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-kqueue"><var class="varname">BACKEND_KQUEUE</var></a></var><span class="initializer"> = 8</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-devpoll"><var class="varname">BACKEND_DEVPOLL</var></a></var><span class="initializer"> = 16</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-port"><var class="varname">BACKEND_PORT</var></a></var><span class="initializer"> = 32</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-all"><var class="varname">BACKEND_ALL</var></a></var><span class="initializer"> = 63</span>;</div>

    <div class="fieldsynopsis"><span class="modifier">const</span>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
      <var class="fieldsynopsis_varname"><a href="class.ev.php#ev.constants.backend-mask"><var class="varname">BACKEND_MASK</var></a></var><span class="initializer"> = 65535</span>;</div>

    
    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Методы */</div>
    <div class="methodsynopsis dc-description">
   <span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.backend.php" class="methodname">backend</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.depth.php" class="methodname">depth</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.embeddablebackends.php" class="methodname">embeddableBackends</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.feedsignal.php" class="methodname">feedSignal</a></span>(<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$signum</code>
   </span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.feedsignalevent.php" class="methodname">feedSignalEvent</a></span>(<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$signum</code>
   </span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.iteration.php" class="methodname">iteration</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.now.php" class="methodname">now</a></span>(): <span class="type"><a href="language.types.float.php" class="type float">float</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.nowupdate.php" class="methodname">nowUpdate</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.recommendedbackends.php" class="methodname">recommendedBackends</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.resume.php" class="methodname">resume</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.run.php" class="methodname">run</a></span>(<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$flags</code>
   <span class="initializer"> = ?</span></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.sleep.php" class="methodname">sleep</a></span>(<span class="methodparam">
    
    <span class="type"><a href="language.types.float.php" class="type float">float</a></span> <code class="parameter">$seconds</code>
   </span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.stop.php" class="methodname">stop</a></span>(<span class="methodparam">
    
    <span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$how</code>
   <span class="initializer"> = ?</span></span>): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.supportedbackends.php" class="methodname">supportedBackends</a></span>(): <span class="type"><a href="language.types.integer.php" class="type int">int</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.suspend.php" class="methodname">suspend</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.time.php" class="methodname">time</a></span>(): <span class="type"><a href="language.types.float.php" class="type float">float</a></span></div>
<div class="methodsynopsis dc-description"><span class="modifier">final</span>
   <span class="modifier">public</span>
   <span class="modifier">static</span>
   <span class="modifier">function</span> <span class="methodname"><a href="ev.verify.php" class="methodname">verify</a></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>

   }</div>
   
  </div>
  
  <div class="section" id="ev.constants">
   <h2 class="title">Предопределённые константы</h2>

   <p class="para" id="ev.constants.loop-flags">
    Флаги, передаваемые при создании цикла:
    
    <dl>
     
      <dt id="ev.constants.flag-auto">
       <strong><code><a href="class.ev.php#ev.constants.flag-auto">Ev::FLAG_AUTO</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Задаёт флагам значение по умолчанию.
       </p>
      </dd>
     
     
      <dt id="ev.constants.flag-noenv">
       <strong><code><a href="class.ev.php#ev.constants.flag-noenv">Ev::FLAG_NOENV</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Если флаг используется (или программа запускает флаг доступа пользователя setuid или флаг доступа группы setgid),
        то модуль <code class="literal">libev</code> не смотрит на переменную окружения
        <var class="varname">LIBEV_FLAGS</var>. Иначе (по умолчанию), если модуль нашёл переменную окружения
        <var class="varname">LIBEV_FLAGS</var>, то он полностью переопределяет флаги.
        Полезно для тестов производительности и поиска ошибок.
       </p>
      </dd>
     
     
      <dt id="ev.constants.flag-forkcheck">
       <strong><code><a href="class.ev.php#ev.constants.flag-forkcheck">Ev::FLAG_FORKCHECK</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Заставляет модуль libev проверять ветвление в каждой итерации, вместо вызова
        метода <span class="methodname"><a href="evloop.fork.php" class="methodname">EvLoop::fork()</a></span> вручную. Это работает путём вызова
        <code class="literal">getpid()</code> на каждой итерации цикла, и, таким образом, это может
        замедлить работу цикла событий с большим количеством итераций цикла, но обычно не
        сильно. Этот флаг нельзя переопределять или указывать в переменной среды
        <var class="varname">LIBEV_FLAGS</var>.
       </p>
      </dd>
     
     
      <dt id="ev.constants.flag-noinotify">
       <strong><code><a href="class.ev.php#ev.constants.flag-noinotify">Ev::FLAG_NOINOTIFY</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Если этот флаг указали, модуль <code class="literal">libev</code>
        не будет пытаться использовать API <code class="literal">inotify</code> для своих наблюдателей
        <a href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_stat_code_did_the_file_attri" class="link external">&raquo;&nbsp;ev_stat</a>
        Флаг бывает полезным для сохранения файловых дескрипторов inotify,
        иначе каждый цикл, который использует наблюдателей <code class="literal">ev_stat</code>,
        будет потреблять один дескриптор <code class="literal">inotify</code>.
       </p>
      </dd>
     
     
      <dt id="ev.constants.flag-signalfd">
       <strong><code><a href="class.ev.php#ev.constants.flag-signalfd">Ev::FLAG_SIGNALFD</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Если флаг указали, модуль <code class="literal">libev</code>
        будет пытаться использовать API <code class="literal">signalfd</code>
        для своих наблюдателей
        <a href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_signal_code_signal_me_when_a" class="link external">&raquo;&nbsp;ev_signal</a>
        (и <a href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_child_code_watch_out_for_pro" class="link external">&raquo;&nbsp;ev_child</a>).
        API передаёт сигналы синхронно, что делает его быстрее и, возможно, даст
        получить данные из очереди сигналов, а также упрощает обработку сигналов
        через потоки, поскольку сигналы корректно блокируются в потоках.
        <code class="literal">Signalfd</code> не используется по умолчанию.
       </p>
      </dd>
     
     
      <dt id="ev.constants.flag-nosigmask">
       <strong><code><a href="class.ev.php#ev.constants.flag-nosigmask">Ev::FLAG_NOSIGMASK</a></code></strong>
      </dt>

      <dd>
       <p class="simpara">
        Если указали флаг, модуль <code class="literal">libev</code>
        будет избегать изменения маски сигнала. В частности, это применяется, чтобы перед
        получением сигнала убедиться, что он разблокирован.
       </p>
       <p class="simpara">
        Такое поведение полезно для обработки пользовательских сигналов или обработки
        сигналов только конкретных потоков.
       </p>
     </dd>
    
    </dl>
   </p>
   
   <p class="para" id="ev.constants.run-flags">
    Флаги, которые передают в метод <span class="methodname"><a href="ev.run.php" class="methodname">Ev::run()</a></span>
    или метод <span class="methodname"><a href="evloop.run.php" class="methodname">EvLoop::run()</a></span>
    
    <dl>
     
      <dt id="ev.constants.run-nowait">
       <strong><code><a href="class.ev.php#ev.constants.run-nowait">Ev::RUN_NOWAIT</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Означает, что цикл событий будет искать и обрабатывать новые события, а также любые
        ожидающие выполнения события из них, но не будет ждать и блокировать процесс
        в случае, если не было никаких событий и завершится после одной итерации цикла.
        Это иногда полезно для опроса и обработки новых событий во время выполнения
        длительных вычислений, сохраняя при этом возможность взаимодействия с программой.
       </p>
      </dd>
     
     
      <dt id="ev.constants.run-once">
       <strong><code><a href="class.ev.php#ev.constants.run-once">Ev::RUN_ONCE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Означает, что цикл событий будет искать новые события (ожидая, если потребуется)
        и обрабатывать эти и любые уже ожидающие события из них.
        Цикл событий будет блокировать процесс, пока не поступит хотя бы одно новое событие
        (им может оказаться внутреннее событие модуля libev, поэтому нет никакой гарантии, что будет
        вызвана заданная callback-функция) и завершится после одной итерации цикла.
       </p>
      </dd>
     
    </dl>
   </p>
   
   <p class="para" id="ev.constants.break-flags">
    Флаги, которые передают
    в метод <span class="methodname"><a href="ev.stop.php" class="methodname">Ev::stop()</a></span>
    или метод <span class="methodname"><a href="evloop.stop.php" class="methodname">EvLoop::stop()</a></span>
    
    <dl>
     
      <dt id="ev.constants.break-cancel">
       <strong><code><a href="class.ev.php#ev.constants.break-cancel">Ev::BREAK_CANCEL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Отмена операции прерывания.
       </p>
      </dd>
     
     
      <dt id="ev.constants.break-one">
       <strong><code><a href="class.ev.php#ev.constants.break-one">Ev::BREAK_ONE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Возвращает самый глубокий запрос
        метода <span class="methodname"><a href="ev.run.php" class="methodname">Ev::run()</a></span>
        (или метода <span class="methodname"><a href="evloop.run.php" class="methodname">EvLoop::run()</a></span>).
       </p>
      </dd>
     
     
      <dt id="ev.constants.break-all">
       <strong><code><a href="class.ev.php#ev.constants.break-all">Ev::BREAK_ALL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Завершает все вложенные вызовы
        метода <span class="methodname"><a href="ev.run.php" class="methodname">Ev::run()</a></span>
        (или метода <span class="methodname"><a href="evloop.run.php" class="methodname">EvLoop::run()</a></span>).
       </p>
      </dd>
     
    </dl>
   </p>
   
   <p class="para" id="ev.constants.watcher-pri">
    Приоритеты наблюдателей:
    
    <dl>
     
      <dt id="ev.constants.minpri">
       <strong><code><a href="class.ev.php#ev.constants.minpri">Ev::MINPRI</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Минимально допустимый приоритет наблюдателя.
       </p>
      </dd>
     
     
      <dt id="ev.constants.maxpri">
       <strong><code><a href="class.ev.php#ev.constants.maxpri">Ev::MAXPRI</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Максимально допустимый приоритет наблюдателя.
       </p>
      </dd>
     
    </dl>
   </p>
   
   <p class="para" id="ev.constants.watcher-revents">
    Битовые маски (полученных) событий:
    
    <dl>
     
      <dt id="ev.constants.read">
       <strong><code><a href="class.ev.php#ev.constants.read">Ev::READ</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Дескриптор файла в наблюдателе
        <span class="classname"><a href="class.evio.php" class="classname">EvIo</a></span>
        доступен для чтения.
       </p>
      </dd>
     
     
      <dt id="ev.constants.write">
       <strong><code><a href="class.ev.php#ev.constants.write">Ev::WRITE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Дескриптор файла в наблюдателе
        <span class="classname"><a href="class.evio.php" class="classname">EvIo</a></span>
        доступен для записи.
       </p>
      </dd>
     
     
      <dt id="ev.constants.timer">
       <strong><code><a href="class.ev.php#ev.constants.timer">Ev::TIMER</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        <span class="classname"><a href="class.evtimer.php" class="classname">EvTimer</a></span>
        наблюдает за превышением лимита времени.
       </p>
      </dd>
     
     
      <dt id="ev.constants.periodic">
       <strong><code><a href="class.ev.php#ev.constants.periodic">Ev::PERIODIC</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        <span class="classname"><a href="class.evperiodic.php" class="classname">EvPeriodic</a></span>
        наблюдает за превышением лимита времени.
       </p>
      </dd>
     
     
      <dt id="ev.constants.signal">
       <strong><code><a href="class.ev.php#ev.constants.signal">Ev::SIGNAL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Сигнал, который указали в методе
        <span class="methodname"><a href="evsignal.construct.php" class="methodname">EvSignal::__construct()</a></span>,
        получен.
       </p>
      </dd>
     
     
      <dt id="ev.constants.child">
       <strong><code><a href="class.ev.php#ev.constants.child">Ev::CHILD</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Идентификатор <code class="parameter">pid</code>, который
        указали в методе
        <span class="methodname"><a href="evchild.construct.php" class="methodname">EvChild::__construct()</a></span>,
        получил изменение статуса.
       </p>
      </dd>
     
     
      <dt id="ev.constants.stat">
       <strong><code><a href="class.ev.php#ev.constants.stat">Ev::STAT</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Путь, который указали в наблюдателе
        <span class="classname"><a href="class.evstat.php" class="classname">EvStat</a></span>,
        поменял свои атрибуты.
       </p>
      </dd>
     
     
      <dt id="ev.constants.idle">
       <strong><code><a href="class.ev.php#ev.constants.idle">Ev::IDLE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Наблюдатель <span class="classname"><a href="class.evidle.php" class="classname">EvIdle</a></span>
        работает, когда остальные наблюдатели ничего не делают.
       </p>
      </dd>
     
     
      <dt id="ev.constants.prepare">
       <strong><code><a href="class.ev.php#ev.constants.prepare">Ev::PREPARE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Все наблюдатели
        <span class="classname"><a href="class.evprepare.php" class="classname">EvPrepare</a></span>
        вызываются непосредственно перед запуском
        метода <span class="methodname"><a href="ev.run.php" class="methodname">Ev::run()</a></span>.
        Поэтому наблюдатели
        <span class="classname"><a href="class.evprepare.php" class="classname">EvPrepare</a></span> —
        последние наблюдатели, которые вызываются перед тем,
        как цикл событий переходит в режим сна или опрашивает новые события.
       </p>
      </dd>
     
     
      <dt id="ev.constants.check">
       <strong><code><a href="class.ev.php#ev.constants.check">Ev::CHECK</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Все наблюдатели
        <span class="classname"><a href="class.evcheck.php" class="classname">EvCheck</a></span>
        помещаются в очередь сразу после того, как
        метод <span class="methodname"><a href="ev.run.php" class="methodname">Ev::run()</a></span>
        собрал новые события, но до того, как они вызовут какую-либо callback-функцию
        для полученных событий.
        Поэтому наблюдатели
        <span class="classname"><a href="class.evcheck.php" class="classname">EvCheck</a></span>
        будут вызваны раньше, чем любые другие наблюдатели с таким же
        либо более низким приоритетом в этой итерации цикла событий.
       </p>
      </dd>
     
     
      <dt id="ev.constants.embed">
       <strong><code><a href="class.ev.php#ev.constants.embed">Ev::EMBED</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Встроенный цикл событий, который задали в наблюдателе
        <span class="classname"><a href="class.evembed.php" class="classname">EvEmbed</a></span>,
        требует к себе внимания.
       </p>
      </dd>
     
     
      <dt id="ev.constants.custom">
       <strong><code><a href="class.ev.php#ev.constants.custom">Ev::CUSTOM</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Никогда не посылается (или иным образом используется) библиотекой
        <code class="literal">libev</code>
        самостоятельно, но может свободно использоваться пользователями
        <code class="literal">libev</code>
        для сигнализирующих наблюдателей (т. е. через метод
        <span class="methodname"><a href="evwatcher.feed.php" class="methodname">EvWatcher::feed()</a></span>
        ).
       </p>
      </dd>
     
     
      <dt id="ev.constants.error">
       <strong><code><a href="class.ev.php#ev.constants.error">Ev::ERROR</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Произошла неизвестная ошибка и наблюдатель будет остановлен.
        Ошибка могла произойти из-за некорректного запуска наблюдателя, потому что
        модулю <code class="literal">libev</code>
        не хватило памяти, дескриптор файла оказался закрытым
        или возникла другая проблема.
        Модуль <code class="literal">Libev</code>
        считает такие ошибки ошибками приложения.
        Дополнительные сведения даёт раздел
        <a href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#ANATOMY_OF_A_WATCHER_CONTENT" class="link external">&raquo;&nbsp;Анатомия наблюдателей</a>
       </p>
      </dd>
     
    </dl>
   </p>
   
   <p class="para" id="ev.constants.watcher-backends">
    Флаги бэкенда:
    
    <dl>
     
      <dt id="ev.constants.backend-select">
       <strong><code><a href="class.ev.php#ev.constants.backend-select">Ev::BACKEND_SELECT</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        <code class="literal">выбор бэкенда — select(2)</code>
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-poll">
       <strong><code><a href="class.ev.php#ev.constants.backend-poll">Ev::BACKEND_POLL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        <code class="literal">опрос бэкенда — poll(2)</code>
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-epoll">
       <strong><code><a href="class.ev.php#ev.constants.backend-epoll">Ev::BACKEND_EPOLL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Специфичный для Linux бэкенд
        <code class="literal">epoll(7)</code>
        для ядер до и после 2.6.9
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-kqueue">
       <strong><code><a href="class.ev.php#ev.constants.backend-kqueue">Ev::BACKEND_KQUEUE</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        <code class="literal">kqueue</code> —
        бэкенд большинства BSD-систем.
        Наблюдатель <span class="classname"><a href="class.evembed.php" class="classname">EvEmbed</a></span>
        можно использовать для вставки одного цикла (с бэкендом kqueue)
        в другой. Например, можно попытаться создать цикл событий
        с бэкендом <code class="literal">kqueue</code>
        и использовать его только для сокетов.
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-devpoll">
       <strong><code><a href="class.ev.php#ev.constants.backend-devpoll">Ev::BACKEND_DEVPOLL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Бэкенд Solaris 8. Пока не реализовали.
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-port">
       <strong><code><a href="class.ev.php#ev.constants.backend-port">Ev::BACKEND_PORT</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Механизм порта событий с хорошим масштабированием в Solaris 10.
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-all">
       <strong><code><a href="class.ev.php#ev.constants.backend-all">Ev::BACKEND_ALL</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Пробовать все бэкенды (кроме испорченных).
        Не рекомендуется использовать напрямую.
        Тут необходимо использовать побитовые операции
        (т. е. <strong><code><a href="class.ev.php#ev.constants.backend-all">Ev::BACKEND_ALL</a></code></strong> &amp; ~ <strong><code><a href="class.ev.php#ev.constants.backend-kqueue">Ev::BACKEND_KQUEUE</a></code></strong>).
        Вызывать метод <span class="methodname"><a href="ev.recommendedbackends.php" class="methodname">Ev::recommendedBackends()</a></span>, или не задавать никакого бэкенда.
       </p>
      </dd>
     
     
      <dt id="ev.constants.backend-mask">
       <strong><code><a href="class.ev.php#ev.constants.backend-mask">Ev::BACKEND_MASK</a></code></strong>
      </dt>
      <dd>
       <p class="simpara">
        Не бэкенд, но маска для выбора всех битов бэкендов из значения
        <code class="parameter">flags</code>, чтобы
        исключить какие-либо бэкенды
        (т. е. когда модифицируется переменная окружения
        <var class="varname">LIBEV_FLAGS</var>).
       </p>
      </dd>
     
    </dl>
   </p>
   
   <blockquote class="note"><p><strong class="note">Замечание</strong>: 
    <p class="simpara">
     Для цикла по умолчанию во время фазы инициализации
     модуля <code class="literal">Ev</code> регистрируется вызов
     <a href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#FUNCTIONS_CONTROLLING_EVENT_LOOPS_CO" class="link external">&raquo;&nbsp;&gt;ev_loop_fork</a>
     через <code class="literal">pthread_atfork</code> (если такой имеется).
    </p>
   </p></blockquote>
   <blockquote class="note"><p><strong class="note">Замечание</strong>: 
    <p class="simpara">
     Есть методы, которые разрешают получить доступ к <em>циклу событий по
     умолчанию</em> в классе <span class="classname"><strong class="classname">Ev</strong></span> (например,
     методы <span class="methodname"><a href="ev.iteration.php" class="methodname">Ev::iteration()</a></span>, <span class="methodname"><a href="ev.depth.php" class="methodname">Ev::depth()</a></span>
     и т. д.). Для <em>пользовательских циклов</em> (которые создали методом
     <span class="methodname"><a href="evloop.construct.php" class="methodname">EvLoop::__construct()</a></span>) эти значения могут быть доступны
     через соответствующие свойства и методы класса <span class="classname"><a href="class.evloop.php" class="classname">EvLoop</a></span>.
    </p>
    <p class="simpara">
     Экземпляр цикла событий по умолчанию можно извлечь
     методом <span class="methodname"><a href="evloop.defaultloop.php" class="methodname">EvLoop::defaultLoop()</a></span>.
    </p>
   </p></blockquote>
  </div>
  
 </div>

 






































































































<h2>Содержание</h2><ul class="chunklist chunklist_reference"><li><a href="ev.backend.php">Ev::backend</a> — Возвращает целое число, описывающее бэкенд, используемый libev</li><li><a href="ev.depth.php">Ev::depth</a> — Получить глубину рекурсии</li><li><a href="ev.embeddablebackends.php">Ev::embeddableBackends</a> — Возвращает набор бэкендов, которые можно встроить в прочие событийные циклы</li><li><a href="ev.feedsignal.php">Ev::feedSignal</a> — Передаём событие сигнала в Ev</li><li><a href="ev.feedsignalevent.php">Ev::feedSignalEvent</a> — Послать событие сигнала в цикл по умолчанию</li><li><a href="ev.iteration.php">Ev::iteration</a> — Получить количество произведённых опросов цикла по умолчанию на предмет новых событий</li><li><a href="ev.now.php">Ev::now</a> — Получить время запуска последней итерации цикла по умолчанию</li><li><a href="ev.nowupdate.php">Ev::nowUpdate</a> — Устанавливает текущее время путём запроса к ядру в процессе обновляя
   время, возвращаемое Ev::now</li><li><a href="ev.recommendedbackends.php">Ev::recommendedBackends</a> — Получить битовую маску рекомендованных бэкендов для данной платформы</li><li><a href="ev.resume.php">Ev::resume</a> — Возобновить выполнение приостановленного ранее событийного цикла по умолчанию</li><li><a href="ev.run.php">Ev::run</a> — Начать проверку наличия событий и вызов callback-функций цикла по умолчанию</li><li><a href="ev.sleep.php">Ev::sleep</a> — Блокировать процесс заданное количество секунд</li><li><a href="ev.stop.php">Ev::stop</a> — Останавливает событийный цикл по умолчанию</li><li><a href="ev.supportedbackends.php">Ev::supportedBackends</a> — Возвращает набор бэкендов, поддерживаемых текущей конфигурацией libev</li><li><a href="ev.suspend.php">Ev::suspend</a> — Приостановить событийный цикл по умолчанию</li><li><a href="ev.time.php">Ev::time</a> — Возвращает текущее время в секундах(дробное число) прошедшее с начала эпохи Unix</li><li><a href="ev.verify.php">Ev::verify</a> — Производит внутреннюю проверку целостности(для отладки)</li></ul>
</div>
<?php manual_footer($setup); ?>