2016-05-23 2 views
0

Ich habe gerade begonnen, mit Pheanstalk und habe ein Problem mit der Reserve-Funktion. Ich habe den folgenden Code für einen Arbeiter Skript:Pheanstalk Reservefunktion

<?php 
    //... code that requires the autoload.php page among and other 

    $queue = new Pheanstalk_Pheanstalk("127.0.0.1:11300"); 
    $queue->watch("action_tube"); 
    $job = $queue->reserve(); 

    //... code that would then output the information obtained from the job 
?> 

Das Problem, das ich habe, ist, dass der Code immer stecken bleibt, wenn die Reservefunktion Vorformen. Ich weiß für eine Tatsache, dass es dort hängen bleibt, weil ich den Aufwand durchführte, diesen Code in einem Browser auszuführen und echo zu verwenden, während Code ausnotiert wurde, um genau zu sehen, wo der Code stecken bleibt. Es ist, als würde innerhalb der Reservefunktion eine unendliche While-Schleife passieren. Wenn ich zum Beispiel $job = $queue->reserve() auskommentieren würde, würde der Code frei und die Seite würde sofort geladen werden, aber wenn ich es nicht auskommentiere, bleibt die Kreisladung im Browser für immer in Bewegung.

FRAGE: Warum könnte ich dieses Problem haben? Ist das normal für die Reservefunktion? Steht es nur darauf, dass etwas in der Warteschlange erscheint? Ich habe tatsächlich die "action_tube" Warteschlange erstellt von einem früheren Skript, so würde ich denken, dass die reserve Funktion würde einige davon herausnehmen. Könnte der Zustand der Warteschlange eine Reservefunktion zum Stillstand bringen? Jede Rückmeldung wird sehr geschätzt!

Antwort

2

Bohnenstange Reserve läuft immer, bis der Auftrag fertig ist

reserve blockiert, bis ein Auftrag fertig ist, möglicherweise für immer. Wenn dies nicht gewünscht ist, können wir die Reservierung mit einem Timeout (in Sekunden) aufrufen, wie lange wir auf den Erhalt eines Jobs warten möchten. Wenn eine solche Reserve Zeiten, wird es None zurück:

>>> beanstalk.reserve(timeout=0) is None 
True 

Fand dieses here

+0

Oh, so wird angenommen, eine Endlosschleife sein, bis er etwas in der Warteschlange findet? – Webeng