2015-12-09 2 views
8

Ich habe eine Warteschlange, die ich in Laravel 5 eingerichtet habe, um Unternehmen und zugehörige Datensätze zu löschen. Jedes Mal, wenn dies passiert, passiert viel Arbeit am Backend, also sind Warteschlangen meine beste Wahl.Was würde verhindern, dass Jobs in einer Warteschlange verarbeitet werden? [PHP/Laravel 5]

Ich richte meine config/queue.php Datei zusammen mit meiner .env Datei ein, so dass der database Treiber verwendet wird. Ich verwende die Methode Queue::pushOn, um Jobs in eine Warteschlange namens company_deletions zu übertragen. Ex.

Queue::pushOn('company_deletions', new CompanyDelete($id)); 

Wo CompanyDelete ist ein Befehl erstellt mit php artisan command:make CompanyDelete --queued

Ich habe versucht, meine Warteschlange bekommen Sie die folgenden Befehle zu verarbeiten, mit:

php artisan queue:work 
php artisan queue:work company_deletions 
php artisan queue:listen 
php artisan queue:listen company_deletions 
php artisan queue:work database 
php artisan queue:listen database 

Manchmal, wenn am Ausgang der oben genannten Befehle suchen , Erhalte ich den folgenden Fehler:

[InvalidArgumentException] 
No connector for [] 

Auch wenn ich keinen Fehler bekomme, kann ich die Jobs aus irgendeinem Grund nicht verarbeiten. Wenn ich in meine jobs Tabelle schaue, kann ich den Job in der Warteschlange sehen, aber die attempts Spalte zeigt 0, reserved zeigt 0 und reserved_at ist Null. Fehle ich ein paar Schritte? Ich habe die Dokumentation mehrmals durchgesehen und kann nicht für das Leben von mir herausfinden, was falsch ist. Ich sehe auch nichts in den Laravel-Fehlerprotokollen. Was würde verhindern, dass diese Jobs verarbeitet werden, sobald sie sich in der jobs Datenbank befinden? Jede Hilfe wird geschätzt.

+4

Sie sollten Ihre 'config/queue.php' – magnetik

+0

Schauen Sie sich die Protokolle aussetzen, sehen, wenn Sie irgendwelche Fehler oder so ... – musicvicious

+0

Wenn Laravel nicht verarbeiten kann, kann es protokollieren und es kann Ihnen helfen, zu debuggen. Mehr -https: //laravel.com/docs/5.0/queues#failed-jobs – user269867

Antwort

1

i in eine smiliar Ausgabe laufen, weil ich die Aufträge in der Standard-Warteschlange ..

 $job = (new EmailJob(
      $this->a, 
      $this->b, 
      $this->c, 
      $this->d, 
      $e 
     ))->onQueue('emails'); 

dann muss ich auf die spezifische Warteschlange hören nicht hinzufügen:

php artisan queue:listen --queue=emails 

in Ihrem Fall es wäre

php artisan queue:listen --queue=company_deletions 
Verwandte Themen