Laravel 4 Warteschlange: höre mal auf

7

Ich habe php artisan queue:listen ausgeführt und nach etwa 27 Minuten hört es auf, weitere Jobs zu verarbeiten. In meinem Fehlerprotokoll sehe ich den Fehler:

%Vor%

Ist das ein Fehler? Ich denke nicht, dass der Zuhörer eine Auszeit haben soll!

Aktualisieren

Ein zweiter Durchlauf des Zuhörers endete nach 3 Stunden. Ich benutze Laravel 4 auf nginx mit php-fgm.

    
Nyxynyx 09.04.2013, 01:32
quelle

8 Antworten

9

Unabhängig davon, wie lange Sie es eingestellt haben, wird der Speicher oder die Zeitüberschreitung nicht mehr ausreichen. Sie können den Supervisor verwenden, um ihn am Laufen zu halten. Es ist wirklich einfach zu bedienen.

Erste Installation :

%Vor%

oder verwenden Sie eine auf ihrer Site aufgelistete Methode wie easy_install http://supervisord.org/installing.html

Fügen Sie nun eine Konfigurationsdatei für den Supervisor hinzu. Öffnen Sie /etc/supervisor/conf.d/queue.conf (oder wie immer Sie die Datei benennen möchten, aber fügen Sie sie in /etc/supervisor/conf.d/ ein) und fügen Sie Folgendes hinzu:

%Vor%

Erklärung der oben genannten: program:_____ ist, wie wir nennen, was ausgeführt wird. Wir werden später darauf verweisen. command ist der Befehl, den Sie ausführen möchten. directory ist der Ort, an dem es ausgeführt werden soll. In meinem Fall bin ich in einem Projekt namens "Laravel". stdout_logfile ist die Datei, in die das von dem Befehl empfangene stdout umgeleitet werden soll. redirect_stderr wird auf "true" gesetzt, um alle Fehler an das gleiche Protokoll zu übergeben, das in stdout_logfile angegeben wurde. Sie können diese auch so einstellen, dass sie in ihre eigene Protokolldatei wechseln.

Supervisor-Controller öffnen :

%Vor%

Lesen Sie den Inhalt des Verzeichnisses /etc/supervisor/conf.d/ : (noch in supervisorctrl)

%Vor%

Fügen Sie das Warteschlangenprogramm dem Supervisor hinzu :

%Vor%

Das ist es. Jetzt sollte es laufen. Wenn Sie Fehler haben, schauen Sie in Ihre Protokolldatei, um zu sehen, was falsch ist.

Sobald Sie Ihren Server neu gestartet haben, müssen Sie den Supervisor erneut mit sudo service supervisor start starten.

Laracasts deckt Supervisor wirklich gut ab. Wenn Sie Laracasts nicht abonniert haben, empfehle ich es sehr.

    
DutGRIFF 12.11.2014 19:18
quelle
5

queue:listen in Laravel 4 hat eine Option --timeout . Wenn Sie eine unbegrenzte Zeitüberschreitung wünschen, sollten Sie die Option --timeout auf 0 setzen.

%Vor%     
timgws 05.06.2014 04:09
quelle
3

starte einfach COMPOSER_PROCESS_TIMEOUT = 4000 php artisan queue: listen

    
sedigo 22.05.2013 11:35
quelle
1

Auch der Prozess, in dem der Handwerker sich bewegt, ist nicht in Ordnung. es ist der Prozesswrapper. Symfony \ Component \ Process \ Process Class wird verwendet, um den beliebigen Prozess auszuführen (in meinem Fall Knp \ Bundle \ SnappyBundle \ Snappy \ LoggableGenerator das Paket, das PDFs mit wkhtmltoPDF druckt, stellt fest, dass wkhtmltoPDF abgelaufen ist, nur weil ich ein PDF mit rende 11000 Seiten, es braucht nur mehr Zeit)

Es hat nichts mit max_execution_time = XXX von php.ini zu tun (da es eine Ausnahme ist, die von der Symfony Process-Instanz mit einer verwirrenden Nachricht ausgelöst wird)

Sie müssen es schaffen, die Objektbeziehungen zu durchlaufen, um

aufzurufen %Vor%

Dies löst das Problem. In meinem Fall:

%Vor%     
juanmf 04.12.2013 23:32
quelle
0

Das Problem ist, dass es ein Zeitlimit gibt.
Ändern Sie das Zeitlimit und das gelöste Problem.
set_time_limit (howmanysecondsyouned)
Ссылка

    
user1465831 09.04.2013 02:59
quelle
0

Ich glaube nicht, dass der Zuhörer ein Zeitlimit hat, ich denke, dass der Prozess, den er versucht, zu laufen, ein Zeitlimit ist. Diese Ausnahme kommt von Symfony \ Component \ Process . Leider ist der Prozesscode für mich heute etwas übertrieben.

    
Phill Sparks 09.04.2013 15:17
quelle
0

Der folgende Befehl funktionierte wie ein Zauber. Es läuft jetzt über Nacht (mehr als 12 Stunden).

%Vor%

Danke an Timgws Antwort.

    
Xolani 01.07.2014 07:24
quelle
0

Haben Sie erwogen, supervisord zu verwenden, um sicherzustellen, dass Ihr Prozess weiterläuft? Wenn supervisord installiert wird, falls Ihr Prozess aus irgendeinem Grund abstürzt, wird dieser Daemon die Sicherung erneut starten. Die Firma, für die ich arbeite, verwendet sie in Verbindung mit der Warteschlange: höre jetzt eine Weile zu.

    
Paul Blakey 23.07.2014 20:37
quelle