2014-03-31 3 views
5

Ich arbeite an meiner ersten Laravel-App, und traf ein seltsames Problem beim Versuch, E-Mails mit E-Mail senden senden Mail::queue.Laravel 4.1 Mail-Warteschlange mit BeanStalkd-Treiber - "Nicht genügend Daten für unserializing"

Ich war ursprünglich mit dem sync Treiber und alles hat gut funktioniert, aber jetzt auf den beanstalkd Treiber umgeschaltet hat, es hat aufgehört, meine E-Mails zu senden.

Meine Config ist wie folgt:

  • Ubuntu 13.10
  • Laravel 4.1
  • PHP 5.5.3
  • Beanstalkd 1.8 über apt-get installiert
  • "pda/pheanstalk": "2.1.*" in composer.json

Wha t ich bemerkt habe ist, dass jedes Mal, wenn ich

$ php artisan queue:work 

laufe Ich erhalte:

[ErrorException]             
    Insufficient data for unserializing - 2570 required, 168 present 


queue:work [--queue[="..."]] [--delay[="..."]] [--force] [--memory[="..."]] [--sleep[="..."]] [--tries[="..."]] [connection] 

Ich habe versucht, die redis Treiber auswählen und das war mir nicht den Fehler geben, so klar Es stimmt etwas nicht damit, wie Pheanstalk auf meiner Maschine läuft.

Ich habe versucht, die Pheanstalk-Version in composer.json zu ändern, aber ich bekomme immer noch das gleiche Problem, egal welche Version ich zu verwenden scheinen.

Problem ist, dieses Problem scheint nicht besonders ausführlich dokumentiert, und die Fehlermeldung gibt nicht wirklich viel weg überhaupt ...

Alle suggesions?

Antwort

0

Laravel serialisiert und verschlüsselt alles, was es an eine Warteschlange weitergibt. Ist Ihr Anwendungsverschlüsselungsschlüssel (app/config/app.php 'key') auf einen nicht leeren Wert gesetzt?

Können Sie beanstalkd selbst abfragen, um zu sehen, welche Nachrichten in die Warteschlange geschoben werden? Sie sollten unverständlich Strings wie diese:

eyJpdiI6IlZwT1p6QkhXQ3BcL0lRUmlHXC9maE8xT2o5Rk1BSUtMM0d5SlRoKzcrSGNLTT0iLCJ2YWx1ZSI6Im02N05LQzNPamNZSmVpTW5kXC80NnkyWEl0RUFMZHFiQXo0VnlNYUlLUUQzSzUrZHNIS2Vlb1kxWkpRS1VFZm5SVERXeHduWEFQelE5SCtZbVBwRmk2QkJPTlB5ek1RNWpKM3JRTzBDSlB3N3orYmk5UmZwM0ZzNmlpVVdQWVdQNWtKSWVQVG5nK29MajcyM3VtTUdraE5SNXJXYUJyYUErb25iTUJGSzhQYms9IiwibWFjIjoiNGFmNjMwNjYxYzk4NmMyZTA2ZTZlMzAwZTBlZjZhMTA1OGM2NzAxNTBkNWUzYTA2MTY3NzNiMTU4NTRlMmEyOSJ9

Dieser Fehler bedeutet, dass die Saiten Sie drücken entweder nicht verschlüsselt ist, oder es ist etwas, das die Arbeit hindert auf die Halbzeit-Warteschlange geschoben wird. Wenn nichts anderes, können Sie nach dem Text dieser Exception suchen ("Unzureichende Daten für das Deserialisieren") und es sollte eine PHP-Datei unter vendor/pda/pheanstalk ergeben, an der Sie fummeln können, um zu versuchen, zu verstehen, was vor sich geht.

0

Sie können keine Objekte an die Ansichtsdaten übergeben, da Laravel diese nicht korrekt serialisieren kann. Sie müssen also nur die Daten ändern, die an die Ansicht übergeben werden, an eine einfache Datenstruktur wie array.

1

Aktivieren Sie diese Antwort: https://stackoverflow.com/a/28226746/1427439

Sie könnten das gleiche Problem haben werden.

Stellen Sie sicher, dass Sie keine Eloquent-Modelle mit dem Verschluss verwenden, den Sie an Mail::queue

übergeben
Verwandte Themen