2013-03-23 4 views
6

kam ich zufällig über Dinge wie:Sind PHP Zecken non-blocking

<?php 
    declare(ticks=1); 

    // using a function as the callback 
    register_tick_function('my_function', true); 

    // using an object->method 
    $object = new my_class(); 
    register_tick_function(array(&$object, 'my_method'), true); 
?> 

, die bei register_tick_function gefunden werden kann.

Ich wollte wissen, ob die Verwendung in PHP blockierte oder nicht?

EDIT: Was ich damit meine, wenn ich mehr als eine PHP-tick läuft auf dem gleichen Thread gestartet haben, ist es in der Lage IO im Hintergrund zu behandeln, während die anderen Zecken laufen oder es für jeden zu warten braucht ankreuzen um Kontrolle abzugeben?

Antwort

2

Häkchenfunktionen blockieren. PHP unterstützt im Allgemeinen nicht (nativ) die parallele Ausführung in derselben Anfrage. Also nein, du wirst nicht in der Lage sein, IO im Hintergrund oder etwas in der Art zu behandeln.

Welche Ticks tut mehr oder weniger Aufrufe an die Tick-Funktion nach jeder Anweisung. Also, was man bekommt, ist so etwas wie dieses:

tick(); 
$a = 1; 
tick(); 
$b = 2; 
tick(); 
// ... 

Und es verhält sich genau so :)

Obwohl, nur damit Sie verstehen, ob diese tatsächlich von Bedeutung ist: Wenn ein Rückruf in JS ausgeführt wird (zB ein Timeout/Event wird ausgelöst), dann ist es nur so blockierend.

+0

Ich bin mir völlig bewusst, nicht blockierend und ich hätte die Frage ein wenig besser gestellt, ich habe die Fragen aktualisiert, um dies zu reflektieren. – WojonsTech

+0

@WojonsTech Sorry, ich verstehe nicht, was du meinst. Tick-Funktionen blockieren genauso wie jede andere Funktion in PHP. Also nein, sie können nicht auf IO warten, während andere Ticks ausgeführt werden, oder so ähnlich. – NikiC

+0

das ist in Ordnung scheint, wie Sie meine Frage beantwortet haben, so ziemlich die Tick-Funktion springt nicht um die Ticks, während sie im Leerlauf sind, behandelt sie in der Reihenfolge – WojonsTech

Verwandte Themen