2017-08-08 3 views
1

ich ein Problem in meinem Laravel Projekt bekam, ich versuche zu Transcodierungs ein Video Datei mit FFMPEG über 450MB in Größe und aufgrund dieser eine Aufnahme lang Zeit ich benutze Warteschlangen in Laravel, um dies zu tun.Laravel Database Queue, „getötet“ nach einigen Sekunden

Aufgrund der Konfiguration meiner Produktionsumgebung i Datenbank Warteschlangen verwenden das Problem ist, dass der Auftrag in der Warteschlange nach etwa 60 Sekunden jedes Mal, jederzeit ich den Befehl getötet wird php artisan queue:work in meinem Vagrant Box.

Die Vagrant-Box verfügt über 4 GB Ram verfügbar, 2D- und 3D-Beschleunigung aktiviert und der memory_peak_usage()-Befehl listet während dieses gesamten Prozesses nie etwas über 20 MB auf.

überprüfte ich die php_sapi_name() und es ist cli wie erwartet, so dass es keine Grenzen überhaupt haben sollte, wenn es um die Ausführungszeit kommt, unabhängig i wieder keine Grenzen für die cli php.ini Datei und entfernt ging zu sicher sein.

Versucht, Vagrant neu zu starten, bekommen Getötet nach ein paar Sekunden sowieso.

So entschied ich mich für den Transcodierungsprozess eine Laravel Befehl, um zu versuchen zu schaffen, fest einprogrammiert ich die Dateipfade und Sachen und siehe da es ohne zu arbeiten getötet ...

ich etwas zu Warteschlangen fehlt Bin ? Ich renne gerade php artisan queue:work ich spezifiziere keine Timeout irgendeiner Art, warum wird meine Warteschlange getötet?

Vielen Dank im Voraus für Ihre Hilfe.

+0

haben Sie mit dem '--timeout' Parameter versucht? – Ali

+0

@Ali das ist irgendwie das ganze Problem, ich will nicht ** alle ** Timeout überhaupt, die Einführung einer würde meine Anwendung brechen, wie ffmpeg kann leicht 1-2 Stunden dauern, um die Verarbeitung der Videos zu beenden. Ich habe auf der Laravel-Dokumentation gelesen, dass die '--timeout'-Option Vorrang vor regulären Timeouts auf dem CLI hätte ... vielleicht, wenn ich eine massive für meinen Anwendungsfall würde das vielleicht funktionieren, aber es ist immer noch böse und macht nicht viel Sinn. –

Antwort

1

Das Standard-Timeout für Aufträge beträgt 60 Sekunden, wie Sie herausgefunden haben. Die Zeitüberschreitung wird mit der Eigenschaft --timeout[=TIMEOUT] angegeben. Die vollständige Deaktivierung der Zeitüberschreitung erfolgt mit .

php artisan queue:work --timeout=0 
Verwandte Themen