Heim > php教程 > PHP源码 > Über die Nachhaltigkeit von Veranstaltungen

Über die Nachhaltigkeit von Veranstaltungen

大家讲道理
Freigeben: 2016-11-11 09:23:28
Original
1431 Leute haben es durchsucht

Informationen zur Ereignispersistenz
Standardmäßig wird jedes Mal, wenn ein ausstehendes Ereignis aktiviert wird (weil sein FD zum Lesen oder Schreiben bereit ist oder weil sein Zeitlimit abgelaufen ist), es in der Rückruffunktion ausgeführt. Wird nicht mehr ausstehend vor der Ausführung. Wenn Sie möchten, dass das Ereignis erneut ansteht, müssen Sie event_add() innerhalb der Callback-Funktion aufrufen.
Wenn ein Ereignis auf EV_PERSIST gesetzt ist, ist das Ereignis dauerhaft, was bedeutet, dass das Ereignis auch dann anstehend bleibt, wenn die Rückruffunktion ausgeführt wird. Wenn Sie möchten, dass es sich in einem nicht ausstehenden Zustand befindet, können Sie event_del() in der Rückruffunktion aufrufen.

Jedes Mal, wenn die Rückruffunktion des Ereignisses ausgelöst wird, wird der Timeout-Status im dauerhaften Ereignis zurückgesetzt. Wenn das Ereignis also EV_READ/EV_PERSIST hat und ein 5-Sekunden-Timeout festgelegt ist, gibt es zwei Situationen, die dieses Ereignis auslösen:

  • Wenn der Socket gelesen werden kann

  • Wenn das 5-Sekunden-Timeout abläuft

<?php
$base = event_base_new();
$event = event_new();

event_set($event,STDIN,EV_READ | EV_PERSIST,&#39;print_line&#39;,[$event,$base]);

event_base_set($event,$base);
event_add($event,5000000);
event_base_loop($base);

function print_line($fd, $events, $arg)
{
    // 5秒超时会自动输出1,每次执行了read后,超时会被重置
    echo 1;
    static $max_requests = 0;
    $max_requests++;
    if ($max_requests == 10) {
        // $arg[1] = $base
        event_base_loopexit($arg[1]);
    }
    // 打印输出
    echo  fgets($fd);
}
Nach dem Login kopieren

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage