1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/ev/evtimer/construct.xml
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

223 lines
7.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 33e5f4ef7243bc1282acb1cba93e8f99c1debe68 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="evtimer.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>EvTimer::__construct</refname>
<refpurpose>Конструктор объекта наблюдателя EvTimer</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<constructorsynopsis>
<modifier>public</modifier>
<methodname>EvTimer::__construct</methodname>
<methodparam>
<type>float</type>
<parameter>after</parameter>
</methodparam>
<methodparam>
<type>float</type>
<parameter>repeat</parameter>
</methodparam>
<methodparam>
<type>callable</type>
<parameter>callback</parameter>
</methodparam>
<methodparam
choice="opt">
<type>mixed</type>
<parameter>data</parameter>
<initializer>&null;</initializer>
</methodparam>
<methodparam
choice="opt">
<type>int</type>
<parameter>priority</parameter>
<initializer>0</initializer>
</methodparam>
</constructorsynopsis>
<para>
Конструктор объекта наблюдателя EvTimer.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<variablelist>
<varlistentry>
<term>
<parameter>after</parameter>
</term>
<listitem>
<para>
Настраивает таймер для запуска через
<parameter>after</parameter> секунд.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>repeat</parameter>
</term>
<listitem>
<para>
Если время повтора равно <constant>0.0</constant>,
то он будет автоматически остановлен после истечения времени ожидания.
Если положительное, таймер будет автоматически настроен на повторный запуск
каждые повторяющиеся секунды, пока не будет остановлен вручную.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>callback</parameter>
</term>
<listitem>
<para>
Смотрите
<link linkend="ev.watcher-callbacks">Наблюдатели callback-функций</link>
.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>data</parameter>
</term>
<listitem>
<para>
Пользовательские данные, связанные с наблюдателем.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<parameter>priority</parameter>
</term>
<listitem>
<para>
<link linkend="ev.constants.watcher-pri">Приоритет наблюдателя</link>
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Простые таймеры</title>
<programlisting role="php">
<![CDATA[
<?php
// Создаёт и запускает таймер через 2 секунды
$w1 = new EvTimer(2, 0, function () {
echo "2 секунды прошло\n";
});
// Создаёт и запускает таймер через 2 секунды, повторяя каждую секунду
// пока мы не остановим его вручную
$w2 = new EvTimer(2, 1, function ($w) {
echo "вызывается каждую секунду, запускается через 2 секунды\n";
echo "итерация = ", Ev::iteration(), PHP_EOL;
// Останавливаем наблюдателя после 5 итераций
Ev::iteration() == 5 and $w->stop();
// Останавливаем наблюдателя, если дальнейшие вызовы вызовут более 10 итераций
Ev::iteration() >= 10 and $w->stop();
});
// Создаём остановленный таймер. Он будет неактивным, пока мы не запустим его сами
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
echo "Callback-функция таймера, созданного как остановленный\n";
// Останавливаем наблюдателя после 2 итераций
Ev::iteration() >= 2 and $w->stop();
});
// Цикл до вызова Ev::stop() или остановки всех наблюдателей
Ev::run();
// Запускаем и смотрим, работает ли он
$w_stopped->start();
echo "Запустили одну итерацию\n";
Ev::run(Ev::RUN_ONCE);
echo "Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);
$w = new EvTimer(10, 0, function() {});
echo "Запуск заблокированного цикла\n";
Ev::run();
echo "END\n";
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
2 секунды прошло
вызывается каждую секунду, запускается через 2 секунды
итерация = 1
вызывается каждую секунду, запускается через 2 секунды
итерация = 2
вызывается каждую секунду, запускается через 2 секунды
итерация = 3
вызывается каждую секунду, запускается через 2 секунды
итерация = 4
вызывается каждую секунду, запускается через 2 секунды
итерация = 5
Запустили одну итерацию
Callback-функция таймера, созданного как остановленный
Перезапустили второй наблюдатель и пробуем обработать те же события, но не блокируем
Запуск заблокированного цикла
вызывается каждую секунду, запускается через 2 секунды
итерация = 8
вызывается каждую секунду, запускается через 2 секунды
итерация = 9
итерация каждую секунду, запускается через 2 секунды
итерация = 10
END
]]>
</screen>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member>
<methodname>EvTimer::createStopped</methodname>
</member>
<member>
<classname>EvPeriodic</classname>
</member>
<member>
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_timer_code_relative_and_opti">ev_timer - относительное и необязательно повторяющееся время ожидания</link>
</member>
<member>
<link xlink:href="http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Be_smart_about_timeouts">Будьте осторожны со временем ожидания</link>
</member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->