2017-08-02 6 views
1

Auf meiner API wollte ich Warteschlangentreiber ändern. Ich wollte von Beanstalkd nach Redis wechseln.Schwerwiegender Fehler: Klasse 'Pheanstalk Pheanstalk' nicht gefunden

Also in meinem composer.json änderte ich meine Abhängigkeiten "pda/pheanstalk": "^3.0" zu "predis/predis": "~1.0". Dann ging ich zu Laravel Forge, eine neue Queue Worker hinzugefügt, die wie folgt aussieht:

Queue workers

ich meine .env Datei aktualisiert: QUEUE_DRIVER=redis und lief composer update. Nachdem ich versucht habe, eine Benachrichtigung (mit E-Mail) auszulösen, implementiert die Benachrichtigung die Schnittstelle ShouldQueue und verwendet die Eigenschaft Queueable. Die Benachrichtigung wurde erfolgreich gesendet (auch über die Warteschlange).

In diesem Moment war ich glücklich, aber warten Sie ... ich meine Sentry Fragen überprüfen und sah die folgenden Fehler:

Fatal Error: Class 'Pheanstalk\Pheanstalk' not found in vendor/laravel/framework/src/Illuminate/Queue/Connectors/BeanstalkdConnector.php in connect at line 21.

In diesem Moment der Fehler/Probleme 200 Mal pro Minute erfolgt um.

Was ich versucht:

  1. Entfernen Sie alle Fehlgeschlagene Jobs aus der Warteschlange
  2. Starten Sie den Server
  3. Auch wieder die pda/pheanstalk Paket über Komponist installieren.

Also im Moment habe ich die pda/pheanstalk installiert, aber nicht über die beanstalkd Warteschlange Arbeiter laufen und ich bin immer noch die Class 'Pheanstalk\Pheanstalk' not found Fehler.

Meine beste Vermutung ist, dass, als ich den BeanStalkd-Queue-Worker entfernte und das Paket mit Composer löste, ein Job im Queue-Worker ausgeführt wurde und jetzt diesen Job immer wieder wiederholt. Aber natürlich könnte ich völlig falsch liegen.

Irgendwelche Ideen, was hier falsch läuft?

EDIT

Ich habe gelöscht jetzt meine Seite von Forge, geprüft, ob der Code gelöscht. In Sentry wird der Fehler noch protokolliert. Das Projekt existiert nicht mehr auf dem Server.

+1

versuchen Sie, alle Ihre Arbeiter neu zu starten – elegisandi

Antwort

0

Hört sich an, als hätten Sie die Warteschlange nicht neu gestartet, um die neuen Einstellungen zu verwenden?

Melden Sie sich bei dem Server und php artisan queue:restart

Die andere Sache laufen - hattet ihr Betreuer oder schon etwas die ältere Warteschlange Config läuft? Wenn ja, könnte die ältere Warteschlange neu gestartet werden.

+0

Ich benutze auch eine Dev und Staging-Site. Ich habe vergessen, die Warteschlange mit den richtigen Einstellungen neu zu starten. Vielen Dank. –

0

Haben Sie sich registriert Pheanstalk\Pheanstalk in Ihrer config/app.php Datei?

Normalerweise ist das der Fall, Laravel wird keine Abhängigkeiten sehen, die nicht registriert wurden.

Innerhalb des Arrays, das die Konfiguration für Ihre App enthält, suchen Sie nach "providers" und geben Sie den Namespace der angegebenen Klasse in dieses Array ein.

+0

'Pheanstalk \ Pheanstalk' ist kein Laravel-Paket, sondern ein PHP-Paket. Es hat keinen Dienstanbieter. Also würde es keinen Unterschied machen, die Klasse in das "Provider" -Array zu setzen. –

+0

@DeesOomens das ist egal. Wenn Sie es dem Array "providers" hinzufügen, wird die Anwendung versuchen, nach dieser Klasse zu suchen und diese zu verwenden. Laravel weiß nicht, ob es eine Standalone-Bibliothek ist oder nicht – vladko

+0

@vladko Es ist wichtig ... [Pheanstalk] (https://github.com/pda/pheanstalk) hat keinen Dienstanbieter. –

0

Stellen Sie sicher, dass Sie alle Verweise auf diese Klasse in conig/app.php sowie Lauf composer dump-autoload entfernen.

Sie können eine globale Suche nach dieser Klasse in Ihrer App durchführen, um sicherzustellen, dass sie verschwunden ist. Zuletzt löschen Sie den Lieferantenordner, falls er noch da ist.

Verwandte Themen